Files
TeslaRel410/BORLAND/BC45/SOURCE/RTL/SOURCE/MATHLIB/COSHL.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

110 lines
3.0 KiB
Plaintext

/*------------------------------------------------------------------------
* filename - coshl.cas
*
* function(s)
* coshl - long double hyperbolic cosine 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>
/*--------------------------------------------------------------------------*
Name coshl - long double hyperbolic function
Usage long double coshl(long double x);
Prototype in math.h
Description coshl computes the hyperbolic cosine of the input value.
Return value coshl returns the hyperbolic cosine of the input value.
For large arguments (absolute value greater than
~11356.5) the result will be _LHUGE_VAL of
the appropriate sign and errno will be set to:
ERANGE Range error.
e
*---------------------------------------------------------------------------*/
long double _FARFUNC coshl (long double x)
{
asm FLD1
asm mov ax, 7FFFh
asm FCHS /* TOS = -1.0, used in FSCALE later */
asm and ax, x [8] /* select exponent */
asm FLD LONGDOUBLE (x)
asm cmp ax, 3fffh+13
asm jae coshl_tooBig /* exp (+-2^13) considered too large */
asm cmp ax, 3fffh-13
asm jb coshl_tiny
coshl_justFits:
__expld(); /* TOS = expl(x) */
asm FLD1
asm FDIV st, st(1) /* TOS = expl (-x) = 1 / expl(x) */
asm FADDP st(1), st /* TOS = expl(x) + expl(-x) */
asm FSCALE /* coshl (x) = (expl(x) + expl(-x)) / 2 */
asm FSTP st(1)
coshl_end:
#pragma noretval
return;
coshl_tooBig:
asm mov ax, 0FFFFh /* force extreme */
asm ja coshl_excess
asm mov ax, x [6]
coshl_excess:
asm test BY0 (x [9]), 80h
asm jnz coshl_tooTiny
asm cmp ax, 0B172h
asm jb coshl_justFits
asm mov si, OVERFLOW
asm jmp short coshl_err
coshl_tooTiny:
asm cmp ax, 0B16Ch
asm jb coshl_justFits
asm mov si, UNDERFLOW
coshl_err:
asm FSTP ST(0) /* pop two items off the stack */
asm FSTP ST(0)
#pragma warn -ret
return __matherrl (_SI, "coshl", &x, NULL,
(UNDERFLOW == _SI) ? 0.0 : _LHUGE_VAL);
#pragma warn .ret
/*
coshl is more accurately calculated by the polynomial
(1 + x^2/2)
when x is tiny (|x| < 2^-13).
*/
coshl_tiny:
asm FMUL ST(0), ST(0)
asm FSCALE /* divide by 2 */
asm FSUBRP ST(1), ST(0) /* +1 == - (-1) */
asm jmp short coshl_end
#pragma warn -rvl
}
#pragma warn .rvl