Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unit LMath;
- Interface
- Uses
- SysUtils;
- Function ExtendedToOtherCC(Source: Extended; BaseOfCount: Word): String;
- Function OtherCCToExtended(Number: String; BaseOfCount: Word): Extended;
- Function DegToRad(Deg: Extended): Extended;
- Function RadToDeg(Rad: Extended): Extended;
- Function IntPower(X: Extended; I: Integer): Extended;
- Function Power(Base, Exponent: Extended): Extended;
- Implementation
- Var
- AllSymbols: String;
- Function IntPower(X: Extended; I: LongInt): Extended;
- Var
- Y: LongInt;
- Begin
- Y:= Abs(I);
- Result:= 1.0;
- While Y > 0 Do Begin
- While Not Odd(Y) Do Begin
- Y := Y Shr 1;
- X := X * X
- End;
- Dec(Y);
- Result := Result * X
- End;
- If I < 0 Then Result := 1.0 / Result
- End;
- Function Power(Base, Exponent: Extended): Extended;
- Begin
- If Exponent = 0.0 Then
- Power:= 1.0
- Else If (Base = 0.0) And (Exponent > 0.0) Then
- Power:= 0.0
- Else If (Frac(Exponent) = 0.0) And (Abs(Exponent) <= MaxInt) Then
- Power:= IntPower(Base, LongInt(Trunc(Exponent)))
- Else
- Power:= Exp(Exponent * Ln(Base));
- End;
- Function DegToRad(Deg: Extended): Extended;
- Begin
- DegToRad:= Deg * 180 / PI;
- End;
- Function RadToDeg(Rad: Extended): Extended;
- Begin
- RadToDeg:= Rad * PI / 180;
- End;
- Function ExtendedToOtherCC;
- Var
- Temp: LongInt;
- Res: String;
- Negative: Boolean;
- Begin
- Negative:= Source < 0;
- Res:= ''; Source:= Abs(Int(Source));
- While Source >= BaseOfCount Do Begin
- Temp:= Trunc(Source - Int(Source / BaseOfCount) * BaseOfCount);
- Source:= Int(Source / BaseOfCount);
- Res:= AllSymbols[Temp + 1] + Res;
- End;
- Temp:= Trunc(Source - Int(Source / BaseOfCount) * BaseOfCount);
- Res:= AllSymbols[Temp + 1] + Res;
- If Negative Then Res:= '-' + Res;
- ExtendedToOtherCC:= Res;
- End;
- Function OtherCCToExtended;
- Var
- P, Temp: Word;
- CurSymbols: String;
- OutPut, Count: Extended;
- Begin
- P:= Length(Number); OutPut:= 0; Count:= 1;
- CurSymbols:= UpperCase(Copy(AllSymbols, 1, BaseOfCount));
- While P >= 1 Do Begin
- For Temp:= 1 To BaseOfCount Do Begin
- If CurSymbols[Temp] = Number[P] Then Begin
- OutPut:= OutPut + Count * (Temp - 1);
- Count:= Count * BaseOfCount;
- Break;
- End;
- End;
- Dec(P);
- End;
- OtherCCToExtended:= OutPut;
- End;
- Initialization
- Begin
- AllSymbols:= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- End;
- End.
Add Comment
Please, Sign In to add comment