awk and trig functions | Unix Linux Forums | Shell Programming and Scripting

 Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

# awk and trig functions

## Shell Programming and Scripting

#1
07-03-2009
 pauli Registered User Join Date: Mar 2007 Last Activity: 23 September 2012, 7:52 AM EDT Location: Singapore Posts: 14 Thanks: 0 Thanked 0 Times in 0 Posts
awk and trig functions

dear all,

In my script, it would be ideal if I could use an arc-cos (inverse cos) function. I think trig functions are indeed provided by awk, but not inverse trig functions.

So my question simply is: are there any alternative ways to incorporate inverse trig functions into a script?

Any help greatly appreciated!

Many thanks,

pauli
#2
07-03-2009
 vgersh99   Forum Advisor Join Date: Feb 2005 Last Activity: 18 April 2014, 9:37 PM EDT Location: Foxborough, MA Posts: 7,526 Thanks: 137 Thanked 534 Times in 502 Posts
look here or here or here

Code:
```function asin(x) { return atan2(x, sqrt(1-x*x)) }
function acos(x) { return atan2(sqrt(1-x*x), x) }
function atan(x) { return atan2(x,1) }```

Last edited by vgersh99; 07-03-2009 at 08:47 AM..
#3
07-15-2009
 ubeejani Registered User Join Date: Jul 2009 Last Activity: 15 September 2009, 6:52 AM EDT Posts: 11 Thanks: 0 Thanked 0 Times in 0 Posts
Hello,
I want to calculate distance between two GPS coordinates(Latitude A, Longitude A, Latitude B, Longitude B). By Spherical Law, the formula is:
distance= ACOS ( SIN(latA) * SIN(latB) + COS(latA) * COS(latB) * COS(longB-LongA)) * R
where R= Radius of the earth(6371)
As there is no ACOS function in awk, therefore I have to use the following method:
function acos(x) { return atan2(sqrt(1-x*x), x) }
value = sin(latA) * sin(latB) + cos(latA) * cos(latB) * cos(longB-LongA)
distance = acos(value)*R
But I don't know when I calculate the distance using this method, I get different value from Spherical law formula. For Spherical Law I use MS Excel to calculate the value.