Files
TeslaRel410/BORLAND/BC45/SOURCE/RTL/SOURCE/MATHLIB/TAN.CAS
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

79 lines
2.0 KiB
Plaintext

/*------------------------------------------------------------------------
* filename - tan.cas
*
* function(s)
* tan - trigonometric tangent function
*-----------------------------------------------------------------------*/
/*
* C/C++ Run Time Library - Version 6.5
*
* Copyright (c) 1987, 1994 by Borland International
* All Rights Reserved.
*
*/
#pragma inline
#include <asmrules.h>
#include <_math.h>
#include <math.h>
#include <errno.h>
#include <stddef.h>
static unsigned short NANTRIG [4] = {0,0,0x0420, 0x7FF8};
/*--------------------------------------------------------------------------*
Name tan - trigonometric tangent function
Usage double tan(double x);
Prototype in math.h
Description tan returns the tangent of the input value. Angles are
specified in radians.
Return value tan returns any value for valid angles.
For very large arguments (magnitude 2^53 or greater) all
precision is lost. This occurs "silently" since the ANSI C
spec does not specify an error return.
*---------------------------------------------------------------------------*/
double _FARFUNC tan( double x )
{
asm FLD DOUBLE (x)
asm mov ax, 7FF0h
asm and ax, W0 (x [6]) /* extract the exponent field */
asm cmp ax, (53 * 16) + 3FF0h /* biased version of exponent 53 */
asm jae tan_tooLarge
#ifdef _Windows
_f87_Tangent();
#else
if (_8087 >= 3)
{
asm db OPCODE_FSINCOS
asm FDIV
}
else
{
asm _FAST_ (_FTAN_)
}
#endif
tan_end:
#pragma noretval
return;
tan_tooLarge: /* total loss of precision */
asm FSTP ST(0) /* pop x from stack */
#pragma warn -ret
return __matherr (TLOSS, "tan", &x, NULL, *((double *) NANTRIG));
#pragma warn .ret
}