Member Name Remember Me? Password
 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

 Thread Tools Search this Thread Display Modes
#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: 21 September 2017, 2:01 AM EDT Location: Foxborough, MA Posts: 8,190 Thanks: 226 Thanked 782 Times in 730 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.
I need your help please.Thanks a lot.
Regards,
Ubee