1 (изменено: torus, 2016-05-20 14:37:42)

Тема: CMD/BAT: 24-битная экспонента

Аналог exp(x) в VBcript int(exp((a/2^24)*log(2))*2^24) :

@echo off
setlocal enabledelayedexpansion
set c=1
for %%i in (
    rem Продолжение квадратных корней двойки
	23726566 19951584 18295683 17520006 17144589 16959907 16868314 16822703
	16799944 16788576 16782895 16780055 16778635 16777925 16777570 16777393
	16777304 16777260 16777238 16777227 16777221 16777218 16777217 16777216
) do (
	set exp[!c!]=%%i
	set /a c+=1
)
set num=%1
set number=16777216
for /l %%i in (1,1,24) do (
	set /a "mask=(num >> (24-%%i)) & 1"
	if !mask!==1 call :mul24 !number! !exp[%%i]! number
)
Echo !number!
endlocal
exit /b

:mul24
setlocal
set a=%1
set b=%2
set /a "n=((a >> 12)*(b >> 12))+(((a & 0xFFF)*(b >> 12)) >> 12)+(((a >> 12)*(b & 0xFFF)) >> 12)"
endlocal&set %3=%n%
goto :eof