Raising floating point errors with FloatingPointErrorsToTrap
ID: 74
using uCalcSoftware;
var uc = new uCalc();
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap);
Console.WriteLine(uc.EvalStr("1/0"));
Console.WriteLine(uc.EvalStr("0/0"));
Console.WriteLine(uc.EvalStr("5*10^308"));
Console.WriteLine(uc.EvalStr("10^-308/10000"));
Console.WriteLine("--- Raise Div-by-0 ---");
uc.Error.FloatingPointErrorsToTrap = (int)ErrorCode.FloatDivisionByZero;
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap);
Console.WriteLine(uc.EvalStr("1/0"));
Console.WriteLine(uc.EvalStr("0/0"));
Console.WriteLine(uc.EvalStr("5*10^308"));
Console.WriteLine(uc.EvalStr("10^-308/10000"));
Console.WriteLine("--- Raise overflow ---");
uc.Error.FloatingPointErrorsToTrap = (int)ErrorCode.FloatOverflow;
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap);
Console.WriteLine(uc.EvalStr("1/0"));
Console.WriteLine(uc.EvalStr("0/0"));
Console.WriteLine(uc.EvalStr("5*10^308"));
Console.WriteLine(uc.EvalStr("10^-308/10000"));
Console.WriteLine("--- Raise invalid & underflow ---");
uc.Error.SetFloatingPointErrorsToTrap(ErrorCode.FloatInvalid, ErrorCode.FloatUnderflow);
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap); // ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow
Console.WriteLine(uc.EvalStr("1/0"));
Console.WriteLine(uc.EvalStr("0/0"));
Console.WriteLine(uc.EvalStr("5*10^308"));
Console.WriteLine(uc.EvalStr("10^-308/10000"));
0
inf
nan
inf
0
--- Raise Div-by-0 ---
8
Division by 0
nan
inf
0
--- Raise overflow ---
4
Floating point overflow
nan
Floating point overflow
0
--- Raise invalid & underflow ---
18
inf
Invalid operation
inf
Floating point underflow using uCalcSoftware; var uc = new uCalc(); Console.WriteLine(uc.Error.FloatingPointErrorsToTrap); Console.WriteLine(uc.EvalStr("1/0")); Console.WriteLine(uc.EvalStr("0/0")); Console.WriteLine(uc.EvalStr("5*10^308")); Console.WriteLine(uc.EvalStr("10^-308/10000")); Console.WriteLine("--- Raise Div-by-0 ---"); uc.Error.FloatingPointErrorsToTrap = (int)ErrorCode.FloatDivisionByZero; Console.WriteLine(uc.Error.FloatingPointErrorsToTrap); Console.WriteLine(uc.EvalStr("1/0")); Console.WriteLine(uc.EvalStr("0/0")); Console.WriteLine(uc.EvalStr("5*10^308")); Console.WriteLine(uc.EvalStr("10^-308/10000")); Console.WriteLine("--- Raise overflow ---"); uc.Error.FloatingPointErrorsToTrap = (int)ErrorCode.FloatOverflow; Console.WriteLine(uc.Error.FloatingPointErrorsToTrap); Console.WriteLine(uc.EvalStr("1/0")); Console.WriteLine(uc.EvalStr("0/0")); Console.WriteLine(uc.EvalStr("5*10^308")); Console.WriteLine(uc.EvalStr("10^-308/10000")); Console.WriteLine("--- Raise invalid & underflow ---"); uc.Error.SetFloatingPointErrorsToTrap(ErrorCode.FloatInvalid, ErrorCode.FloatUnderflow); Console.WriteLine(uc.Error.FloatingPointErrorsToTrap); // ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow Console.WriteLine(uc.EvalStr("1/0")); Console.WriteLine(uc.EvalStr("0/0")); Console.WriteLine(uc.EvalStr("5*10^308")); Console.WriteLine(uc.EvalStr("10^-308/10000"));
#include
#include "uCalc.h"
using namespace std;
using namespace uCalcSoftware;
int main() {
uCalc uc;
cout << uc.Error().FloatingPointErrorsToTrap() << endl;
cout << uc.EvalStr("1/0") << endl;
cout << uc.EvalStr("0/0") << endl;
cout << uc.EvalStr("5*10^308") << endl;
cout << uc.EvalStr("10^-308/10000") << endl;
cout << "--- Raise Div-by-0 ---" << endl;
uc.Error().FloatingPointErrorsToTrap((int)ErrorCode::FloatDivisionByZero);
cout << uc.Error().FloatingPointErrorsToTrap() << endl;
cout << uc.EvalStr("1/0") << endl;
cout << uc.EvalStr("0/0") << endl;
cout << uc.EvalStr("5*10^308") << endl;
cout << uc.EvalStr("10^-308/10000") << endl;
cout << "--- Raise overflow ---" << endl;
uc.Error().FloatingPointErrorsToTrap((int)ErrorCode::FloatOverflow);
cout << uc.Error().FloatingPointErrorsToTrap() << endl;
cout << uc.EvalStr("1/0") << endl;
cout << uc.EvalStr("0/0") << endl;
cout << uc.EvalStr("5*10^308") << endl;
cout << uc.EvalStr("10^-308/10000") << endl;
cout << "--- Raise invalid & underflow ---" << endl;
uc.Error().SetFloatingPointErrorsToTrap(ErrorCode::FloatInvalid, ErrorCode::FloatUnderflow);
cout << uc.Error().FloatingPointErrorsToTrap() << endl; // ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow
cout << uc.EvalStr("1/0") << endl;
cout << uc.EvalStr("0/0") << endl;
cout << uc.EvalStr("5*10^308") << endl;
cout << uc.EvalStr("10^-308/10000") << endl;
}
0
inf
nan
inf
0
--- Raise Div-by-0 ---
8
Division by 0
nan
inf
0
--- Raise overflow ---
4
Floating point overflow
nan
Floating point overflow
0
--- Raise invalid & underflow ---
18
inf
Invalid operation
inf
Floating point underflow #include <iostream> #include "uCalc.h" using namespace std; using namespace uCalcSoftware; int main() { uCalc uc; cout << uc.Error().FloatingPointErrorsToTrap() << endl; cout << uc.EvalStr("1/0") << endl; cout << uc.EvalStr("0/0") << endl; cout << uc.EvalStr("5*10^308") << endl; cout << uc.EvalStr("10^-308/10000") << endl; cout << "--- Raise Div-by-0 ---" << endl; uc.Error().FloatingPointErrorsToTrap((int)ErrorCode::FloatDivisionByZero); cout << uc.Error().FloatingPointErrorsToTrap() << endl; cout << uc.EvalStr("1/0") << endl; cout << uc.EvalStr("0/0") << endl; cout << uc.EvalStr("5*10^308") << endl; cout << uc.EvalStr("10^-308/10000") << endl; cout << "--- Raise overflow ---" << endl; uc.Error().FloatingPointErrorsToTrap((int)ErrorCode::FloatOverflow); cout << uc.Error().FloatingPointErrorsToTrap() << endl; cout << uc.EvalStr("1/0") << endl; cout << uc.EvalStr("0/0") << endl; cout << uc.EvalStr("5*10^308") << endl; cout << uc.EvalStr("10^-308/10000") << endl; cout << "--- Raise invalid & underflow ---" << endl; uc.Error().SetFloatingPointErrorsToTrap(ErrorCode::FloatInvalid, ErrorCode::FloatUnderflow); cout << uc.Error().FloatingPointErrorsToTrap() << endl; // ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow cout << uc.EvalStr("1/0") << endl; cout << uc.EvalStr("0/0") << endl; cout << uc.EvalStr("5*10^308") << endl; cout << uc.EvalStr("10^-308/10000") << endl; }
Imports System
Imports uCalcSoftware
Public Module Program
Public Sub Main()
Dim uc As New uCalc()
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap)
Console.WriteLine(uc.EvalStr("1/0"))
Console.WriteLine(uc.EvalStr("0/0"))
Console.WriteLine(uc.EvalStr("5*10^308"))
Console.WriteLine(uc.EvalStr("10^-308/10000"))
Console.WriteLine("--- Raise Div-by-0 ---")
uc.Error.FloatingPointErrorsToTrap = CInt(ErrorCode.FloatDivisionByZero)
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap)
Console.WriteLine(uc.EvalStr("1/0"))
Console.WriteLine(uc.EvalStr("0/0"))
Console.WriteLine(uc.EvalStr("5*10^308"))
Console.WriteLine(uc.EvalStr("10^-308/10000"))
Console.WriteLine("--- Raise overflow ---")
uc.Error.FloatingPointErrorsToTrap = CInt(ErrorCode.FloatOverflow)
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap)
Console.WriteLine(uc.EvalStr("1/0"))
Console.WriteLine(uc.EvalStr("0/0"))
Console.WriteLine(uc.EvalStr("5*10^308"))
Console.WriteLine(uc.EvalStr("10^-308/10000"))
Console.WriteLine("--- Raise invalid & underflow ---")
uc.Error.SetFloatingPointErrorsToTrap(ErrorCode.FloatInvalid, ErrorCode.FloatUnderflow)
Console.WriteLine(uc.Error.FloatingPointErrorsToTrap) '// ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow
Console.WriteLine(uc.EvalStr("1/0"))
Console.WriteLine(uc.EvalStr("0/0"))
Console.WriteLine(uc.EvalStr("5*10^308"))
Console.WriteLine(uc.EvalStr("10^-308/10000"))
End Sub
End Module
0
inf
nan
inf
0
--- Raise Div-by-0 ---
8
Division by 0
nan
inf
0
--- Raise overflow ---
4
Floating point overflow
nan
Floating point overflow
0
--- Raise invalid & underflow ---
18
inf
Invalid operation
inf
Floating point underflow Imports System Imports uCalcSoftware Public Module Program Public Sub Main() Dim uc As New uCalc() Console.WriteLine(uc.Error.FloatingPointErrorsToTrap) Console.WriteLine(uc.EvalStr("1/0")) Console.WriteLine(uc.EvalStr("0/0")) Console.WriteLine(uc.EvalStr("5*10^308")) Console.WriteLine(uc.EvalStr("10^-308/10000")) Console.WriteLine("--- Raise Div-by-0 ---") uc.Error.FloatingPointErrorsToTrap = CInt(ErrorCode.FloatDivisionByZero) Console.WriteLine(uc.Error.FloatingPointErrorsToTrap) Console.WriteLine(uc.EvalStr("1/0")) Console.WriteLine(uc.EvalStr("0/0")) Console.WriteLine(uc.EvalStr("5*10^308")) Console.WriteLine(uc.EvalStr("10^-308/10000")) Console.WriteLine("--- Raise overflow ---") uc.Error.FloatingPointErrorsToTrap = CInt(ErrorCode.FloatOverflow) Console.WriteLine(uc.Error.FloatingPointErrorsToTrap) Console.WriteLine(uc.EvalStr("1/0")) Console.WriteLine(uc.EvalStr("0/0")) Console.WriteLine(uc.EvalStr("5*10^308")) Console.WriteLine(uc.EvalStr("10^-308/10000")) Console.WriteLine("--- Raise invalid & underflow ---") uc.Error.SetFloatingPointErrorsToTrap(ErrorCode.FloatInvalid, ErrorCode.FloatUnderflow) Console.WriteLine(uc.Error.FloatingPointErrorsToTrap) '// ErrorCode::FloatInvalid + ErrorCode::FloatUnderflow Console.WriteLine(uc.EvalStr("1/0")) Console.WriteLine(uc.EvalStr("0/0")) Console.WriteLine(uc.EvalStr("5*10^308")) Console.WriteLine(uc.EvalStr("10^-308/10000")) End Sub End Module