I am working on a console algorithm that does math stuff and then writes the results to a text file. The problem is, at times the math may include a sqrt(-1) or (1/0) situation. Instead of getting some kind of error exception, it just writes QNAN or -1.#IND to the file and keeps chugging along (even though the original arrays were Dim’d as Double). The program reading this is confused.
I have tried
if not IsNumber then
but that didn’t seem to catch the -1.#IND.
So in short, is there an easy way to test for math errors within Xojo?
Thanks!
The test I used was
if not IsNumeric(MyArray(i)) then
Here is the long version so you can paste it into a button event to see what is going on, what I do in my code is use extension methods. There is some information in the language reference under ‘Double’ and it leads you to believe there should be a NaN but it is represented as IND for some reason - a bug or documentation error maybe?
dim result1, result2 as double
dim testINF, testNAN, testIND as boolean
// should get INF or -INF
result1 = 1.0 / 0.0
if Str(result1).Uppercase.InStr("INF") <> 0 then
testINF = true
end
if Str(result1).Uppercase.InStr("NAN") <> 0 then
testNAN = true
end
if Str(result2).Uppercase.InStr("IND") <> 0 then
testIND = true
end
// should get NaN but we get IND (indeterminate)
result2 = Sqrt(-1.0)
if Str(result2).Uppercase.InStr("INF") <> 0 then
testINF = true
end
if Str(result2).Uppercase.InStr("NAN") <> 0 then
testNAN = true
end
if Str(result2).Uppercase.InStr("IND") <> 0 then
testIND = true
end