devxlogo

Standard Math Problem

Standard Math Problem

A program originally written using the Borland C++ Compiler hastwo problems in Visual Basic 3.0, Standard Edition. This programuses trigonometry to calculate the distance between two points,when you know their latitude and longitude, such as N 90 W 12345 56 S 90 W 0.

The C++ formula, using the Inverse Cosine Function acos() doubledistance; double radians = 3.141592654 / 180; double intermediate_result;distance=(69.094*acos(intermediate_result)) / radians.

There is a resolution difference between C++ and Visual Basicresults.

Problem 1: Inconsistent results: Assume intermediate_result =0.999995422198391and printing to 10 decimal places. Distance:Using C++ 11.9876152369 miles, using VB 11.9931567014 miles. InverseCosine input is -1 to +1, its result is 0 to 180 degrees. In C++,acos(angle).

Visual Basic 3.0, Standard Edition, does not directly supportInverse Cosine. But VB help shows “Derived Math Functions.”

Microsoft’s formula is: Arcos(x)=Atn(-x/Sqr(-x*x+1))+1.5708. Thedifference in resolution is that 1.5708 is too large. When I subtract3.67320510333E-06 from 1.5708, my VB results match my C++ results.Now, I get the exact same answers with VB as with C++.

Problem 2: Hang on -1. When a value of -1 is presented to this”Derived Math Function,” Windows Hangs in this Arcosfunction. Fix for Visual Basic: if intermediate_result = 1 thendistance = 0, if intermediate_result = -1 then distance = 180* 69.094

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist