Home Search Forums Register Forum Rules Man Pages Unix Commands Linux Commands FAQ Members Search Today's Posts Mark Forums Read

 Shell Programming and Scripting BSD, Linux, and UNIX shell scripting — Post awk, bash, csh, ksh, perl, php, python, sed, sh, shell scripts, and other shell scripting languages questions here.

# awk and trig functions

## Shell Programming and Scripting

#1
07-03-2009   -   Original Discussion by pauli
 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   -   Original Discussion by pauli
 vgersh99   Forum Advisor Join Date: Feb 2005 Last Activity: 19 November 2017, 7:58 AM EST Location: Foxborough, MA Posts: 8,201 Thanks: 231 Thanked 785 Times in 732 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 09:47 AM..
#3
07-15-2009   -   Original Discussion by pauli
 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.