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

87 lines
2.0 KiB
Plaintext

/*------------------------------------------------------------------------
* filename - log.cas
*
* function(s)
* log - natural logarithm 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 NANLOG [4] = {0,0,0x0480, 0xFFF8};
/*--------------------------------------------------------------------------*
Name log - natural logarithm function
Usage double log(double x);
Prototype in math.h
Description log calculates the natural logarithm of x, which must be
greater than zero.
Return value log returns the natural logarithm of x, which must be
greater than zero.
*---------------------------------------------------------------------------*/
#pragma warn -use
double _FARFUNC log( double x )
{
double temp;
asm FLD DOUBLE (x)
asm mov ax, W0 (x [6]) /* get the exponent field */
asm shl ax, 1
asm jz log_zero
asm jc log_imaginary
asm cmp ax, 0FFE0h
asm je log_infinite
#ifdef _Windows
_f87_Log();
#else
asm _FAST_ (_FLOG_)
#endif
log_end:
#pragma noretval
return;
log_zero:
asm mov si, SING
temp = -HUGE_VAL;
asm jmp short log_complain
log_infinite:
asm mov si, OVERFLOW
temp = HUGE_VAL;
asm jmp short log_complain
log_imaginary:
asm mov si, DOMAIN
temp = *((double *) NANLOG);
log_complain:
asm FSTP ST(0) /* pop x from stack */
#pragma warn -ret
return __matherr (_SI, "log", &x, NULL, temp);
#pragma warn .ret
}
#pragma warn .use