Repository navigation
Modern Math CTan
Paul Squires edited this page Oct 19, 2026
·
6 revisions
Home › Math Library › Math Library › CTan
Returns the tangent of a complex number, finite even for a large imaginary part.
CTan( byref z as Complex ) as Complex-
The stabilised form, from .NET.
CSin( z ) / CCos( z )isinf/inf— that is, NaN — for an imaginary part above about 710, becausecoshoverflows there while the tangent itself is heading calmly for ±i. This uses the double-angle identity, and above|im| = 4divides through bycoshso that neither operand can overflow. -
Both axes are answered directly, which is both exact and correct about the sign of a zero:
CTan( 1 - 0i )istan(1) - 0i, and the general path gives the last digit oftan(1)wrong and the zero the wrong sign. - Spelled with the
Cprefix because, when this library was a header in namespaceFB, a function of the unprefixed name shadowed the intrinsic for every later header — measured, it broke what is nowrandom.tiko— after which the intrinsic could not be called back. The name stayed when the header becamestd/numeric.
#import "std/numeric"
using numeric
dim as Complex z = CSet( 3, 4 )
print CToString( CTan( z ) ) '' -0.00018734620462947842+0.9993559873814732i
print CToString( CTan( CSet( 1, 750 ) ) ) '' 0+1i -- still finite -- heading for i
print CIsNaN( CSin( CSet( 1, 750 ) ) / CCos( CSet( 1, 750 ) ) ) '' true -- the naive route, for comparison
print CToString( CTan( CSet( 1, 0 ) ) ) '' 1.5574077246549023+0i -- exactly the real tangentLibrary: Math Library
Category: Math Library
Documented under: Members
tiko-lang · Home · Feature Index · Keyword Index · License
FreeBASIC manual pages reproduced under the GNU FDL 1.3.
- Generics
- Interfaces
- For Each
- Iterators
- Tuples
- Array Results
- Defer
- Lambdas
- Block Strings
- Partial Types
- String Slices
- Embed
- Typed Variadics
- C Header Import
- Foreign Library Linking
- UString
- Fixed-Width Types
- Nullptr
- String Library
- Format
- Array
- Map
- Set
- LinkedList
- OrderedMap
- OrderedSet
- Sorting
- Optional
- Result
- Smart Pointers
- Date and Time (Chrono)
- Filesystem
- File Streams
- Config (INI and TOML)
- Codec
- Hash
- UUID
- OS
- Process
- Net
- HTTP and TLS
- Math Library
- Finance
- Logging
- Terminal TUI Library
- PsControls
- tkControls
- sys/win
- Goroutines and Channels
- LLVM Backend
- tiko build
- TIKO_COMPILER
- Variable Declarations
- Standard Data Types
- User Defined Types
- Procedures
- Operators
- Control Flow Statements
- Converting Data Types
- Array Functions
- String Functions
- Mathematical Functions
- Bit Manipulation
- Date and Time Functions
- File I/O Functions
- Console Functions
- User Input (Runtime Library)
- User Input Functions (Graphics Library)
- Screen Functions
- 2D Drawing Functions
- Graphics Library Reference
- Graphics Keyword List
- Memory Functions
- Threading Support Functions
- Error Handling Functions
- Operating System Functions
- Preprocessor
- Intrinsic Defines
- Miscellaneous Keywords
- Modularizing