'+-----------------------------------------------------------------------------------+ '| Header: Check parameters(if any..) | '| DisplayCheck:|Il1 are Alt-0124, Big i, small L, One ߎę֚񱸩 | Const Author="FBSinCos.Bas v018.3b 2008 by ytwinky, MD"' | '| (ShortCuts: none) | '| Credits: Thx @ volta 4 optimizing the ASM-part ;-)) | '| Purpose: Evaluate Sin AND Cos with ONE (Asm-)Statement | '+-----------------------------------------------------------------------------------+ '(For the special chars: the first is the DOS-char, then the Win-char) Const RhoD=45.0/Atn(1.0) Dim As Double Angle, fbSin, fbCos Sub FBSinCos(Angle As Double, byRef fbSin As Double, byRef fbCos As Double) '2008 by ytwinky, optimized by volta ;-)) Asm fld qword Ptr [Angle] 'Angle -> st(0) fsincos 'compute sin AND cos mov edx, [fbCos] 'Addr. of fbCos -> EDX fstp qword Ptr [edx] 'St(0) = cos -> fbCos mov edx, [fbSin] 'Addr. of fbSin -> EDX fstp qword Ptr [edx] 'St(0) = sin -> fbSin End Asm End Sub Print Author &!"\nCompute Sin AND Cos with ONE (ASM-)Statement" Do Input "Angle(0 --> End):", Angle If Angle=0 Then End Angle/=RhoD Print "Angle="; Print Using"####.####";Angle*RhoD FBSinCos(Angle, fbSin, fbCos) Print "FBSin=" &fbSin &!"\n Sin=" &Sin(Angle) &!"\nFBCos=" &fbCos Print " Cos=" &Cos(Angle) &!"\nTest=" &fbCos^2+fbSin^2 &"(MUST be 1)" Loop