Sponsored Content
Top Forums Shell Programming and Scripting Lat/Long Distance Calculation Post 302113984 by Perderabo on Wednesday 11th of April 2007 09:25:03 PM
Old 04-11-2007
Computing the inverse trig functions would be quite a chore. This really should be written in C. If you must use a script, maybe you can use a little C program to give you access to the C library? Here is a quick C program...
Code:
$ cat mathtool.c
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
int main(int argc, char *argv[])  {
        double arg2,result;
        arg2=strtod(argv[2],(char **) NULL);
        if (!strcmp(argv[1], "asin")) {
                result=asin(arg2);
        } else if (!strcmp(argv[1], "asind")) {
                result=asin(arg2)*57.29577951308232087679815481410517033240547246656432154916024386120;
        } else if (!strcmp(argv[1], "acos")) {
                result=acos(arg2);
        } else if (!strcmp(argv[1], "acosd")) {
                result=acos(arg2)*57.29577951308232087679815481410517033240547246656432154916024386120;
        } else if (!strcmp(argv[1], "atan")) {
                result=atan(arg2);
        } else if (!strcmp(argv[1], "atand")) {
                result=atan(arg2)*57.29577951308232087679815481410517033240547246656432154916024386120;
        } else {
                printf("error \n");
        }
        printf("%-20.6f \n", result);
        exit(0);
}
$
I-search:
$ gcc mathtool.c -l m -o mathtool
$ ./mathtool asin 1.0
1.570796
$ ./mathtool asind 1.0
90.000000

I only put in asin, acos, and atan, but you could add in the regular trig functions too. I also put in asind, acosd, and atand which converts the answer to degrees (not degrees, minutes, seconds).
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Long Distance UNIX (Solaris) Cloning ?

Need some advice and guidance for this UNIX beginner. Due to downsizing I have inherited the SysAdmin duties..(sigh). Please excuse and forgive me if I use the wrong terms below.... Situation: We have UNIX ( Solaris 7/8/9( it varies) on Sun Ultra 10's) servers located at several global... (1 Reply)
Discussion started by: HikerLT
1 Replies

2. Shell Programming and Scripting

program to calculate distance between 5 atoms

Hello, I am a beginner with perl. I have a perl program to calculate the distance between 5 atoms or more. i have an array which looks like this: 6.324 32.707 50.379 5.197 32.618 46.826 4.020 36.132 46.259 7.131 38.210 45.919 6.719 38.935 42.270 2.986 39.221 ... (1 Reply)
Discussion started by: annie_singh
1 Replies

3. Programming

Converting distance list to distance matrix in R

Hi power user, I have this type of data (distance list): file1 A B 10 B C 20 C D 50I want output like this # A B C D A 0 10 30 80 B 10 0 20 70 C 30 20 0 50 D 80 70 50 0 Which is a distance matrix I have tried... (0 Replies)
Discussion started by: anjas
0 Replies

4. Shell Programming and Scripting

Calculate distance and azimuth

Hi all, I have a data file like this lat lon lat lon 12.000 25.125 14.235 25.012 14.200 81.000 25.584 25.014 45.023 25.365 25.152 35.222 I want to calculate distance and azimuth between this points eg:- 12.000,25.125 and 14.235,25.012 I want to use awk programming... (3 Replies)
Discussion started by: chamara
3 Replies

5. Shell Programming and Scripting

Calculating distance between two LAT long coordinates

hi, i have a pair of latitude and longitude and i want to calculate the distance between these two points. In vbscript i achieved in the following way...Now i want to implement this in unix shell scripting.... <% Dim lat1, lon1, lat2, lon2 const pi = 3.14159265358979323846 ... (8 Replies)
Discussion started by: aemunathan
8 Replies

6. UNIX for Dummies Questions & Answers

How to make a distance matrix

Hi, I'm trying to generate a distance matrix between sample pairs for use in a tree-drawing program (example below). The example below demonstrates what I'd like to get out of the data - essentially, to calculate the proportion of positions where two samples differ. Any help much appreciated!... (1 Reply)
Discussion started by: auburn
1 Replies

7. Shell Programming and Scripting

finding distance between numbers

Hi, I have a file as ABC 1634230,1634284,1634349,1634468 1634272,1634301,1634356,1634534 What I want is to find distance between the numbers.. column 1 is the gene name and column 2 are starts and column 3 are their respective stops for the starts. So what I want is column 3 which has +1... (2 Replies)
Discussion started by: Diya123
2 Replies

8. Shell Programming and Scripting

Geographical distance between long and lat in bash

Does anyone know of any script or packages that allow the calculation of the geographical distance between two points of lat/long from within a bash shell? I have been searching the web for the past few days and none of the options seem compatible with bash variables... (eg. geodist) Many... (3 Replies)
Discussion started by: lily-anne
3 Replies

9. Shell Programming and Scripting

Edit distance using perl or awk

Dear all, I am working on a large Sindhi lexicon which I hope to complete by 2017 and place in open source. The database is in Arabic script in two columns delimited by an equal to sign. Column 1 contains a word or words without the short vowel and also some extraneous information which is... (0 Replies)
Discussion started by: gimley
0 Replies
sin(3)							     Library Functions Manual							    sin(3)

NAME
sin, sind, cos, cosd, tan, tand, cot, cotd, asin, asind, acos, acosd, atan, atand, atan2, atand2 - Trigonometric and inverse trigonometric functions in radian and degree calculations. LIBRARY
Math Library (libm.a) SYNOPSIS
#include <math.h> double sin (double x); float sinf (float x); long double sinl (long double x); double sind (double x); float sindf (float x); long double sindl (long double x); double cos (double x); float cosf (float x); long double cosl (long double x); double cosd (double x); float cosdf (float x); long double cosdl (long double x); double tan (double x); float tanf (float x); long double tanl (long double x); double tand (double x); float tandf (float x); long double tandl (long double x); double cot (double x); float cotf (float x); long double cotl (long double x); double cotd (double x); float cotdf (float x); long double cotdl (long double x); double asin (double x); float asinf (float x); long double asinl (long double x); double asind (double x); float asindf (float x); long double asindl (long double x); double acos (double x); float acosf (float x); long double acosl (long double x); double acosd (double x); float acosdf (float x); long double acosdl (long double x); double atan (double x); float atanf (float x); long double atanl (long double x); double atand (double x); float atandf (float x); long double atandl (long double x); double atan2 (double y, double x); float atan2f (float y, float x); long double atan2l (long double y, long double x); double atand2 (double y, double x); float atand2f (float y, float x); long double atand2l (long double y, long double x); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: acos(): XPG4 asin(): XPG4 atan(): XPG4 atan2(): XPG4 cos(): XPG4 sin(): XPG4 tan(): XPG4 Refer to the standards(5) reference page for more information about industry standards and associated tags. DESCRIPTION
The sin(), sinf(), and sinl() functions compute the sine of x, measured in radians. The sind(), sindf(), and sindl() functions compute the sine of x, measured in degrees. The cos(), cosf(), and cosl() functions compute the cosine of x, measured in radians. The cosd(), cosdf(), and cosdl() functions compute the cosine of x, measured in degrees. The tan(), tanf(), and tanl() functions compute the tangent of x, measured in radians. The tand(), tandf(), and tandl() functions compute the tangent of x, measured in degrees. The cot(), cotf(), and cotl() functions compute the cotangent of x, measured in radians. The cotd(), cotdf(), and cotdl() functions compute the cotangent of x, measured in degrees. The asin(), asinf(), and asinl() functions compute the principal value of the arc sine of x in the interval [-pi/2,pi/2] radians. The value of x must be in the domain [-1,1]. The asind(), asindf(), and asindl() functions compute the principal value of the arc sine of x in the interval [-90,90] degrees. The value of x must be in the domain [-1,1]. The acos(), acosf(), and acosl() functions compute the principal value of the arc cosine of x in the interval [0,pi] radians. The value of x must be in the domain [-1,1]. The acosd(), acosdf(), and acosdl() functions compute the principal value of the arc cosine of x in the interval [0,180] degrees. The value of x must be in the domain [-1,1]. The atan(), atanf(), and atanl() functions compute the principal value of the arc tangent of x in the interval [-pi/2,pi/2] radians. The atand(), atandf(), and atandl() functions compute the principal value of the arc tangent of x in the interval [-90,90] degrees. The atan2(), atan2f(), and atan2l() functions compute the principal value of the arc tangent of y/x, in the interval [-pi,pi] radians. The sign of atan2() and atan2f() is determined by the sign of y. The value of atan2(y,x) is computed as follows where f is the number of frac- tion bits associated with the data type. ------------------------------------------------------ Value of Input Arguments Angle Returned ------------------------------------------------------ x = 0 or y/x > 2**(f+1) pi/2 * (sign y) x > 0 and y/x <= 2**(f+1) atan(y/x) x < 0 and y/x <= 2**(f+1) pi * (sign y) + atan(y/x) ------------------------------------------------------ The atand2(), atand2f(), and atand2l() functions compute the principal value of the arc tangent of y/x in the interval [-180,180] degrees. The sign of atand2() and atand2f() is determined by the sign of y. The following table describes function behavior in response to exceptional arguments: ----------------------------------------------------------------------------------- Function Exceptional Argument Routine Behavior ----------------------------------------------------------------------------------- sin(), sinf(), sinl() |x| = infinity Invalid argument sind(), sindf(), sindl() |x| = infinity Invalid argument sind(), sindf(), sindl() |x| < (180/pi) * min_float Underflow cos(), cosf(), cosl() |x| = infinity Invalid argument cosd(), cosdf(), cosdl() |x| = infinity Invalid argument tan(), tanf(), tanl() |x| = infinity Invalid argument tand(), tandf(), tandl() |x| = infinity Invalid argument tand(), tandf(), tandl() |x| < (180/pi) * min_float Underflow tand(), tandf(), tandl() x = (2n+1) * 90 Overflow cot(), cotf(), cotl() x = 0 Overflow cotd(), cotdf(), cotdl() |x| = multiples of 180 degrees Overflow asin(), asinf(), asinl() |x| > 1 Invalid argument asind(), asindf(), asindl() |x| > 1 Invalid argument acos(), acosf(), acosl() |x| > 1 Invalid argument acosd(), acosdf(), acosdl() |x| > 1 Invalid argument atan2(), atan2f(), atan2l() x = y = 0 Invalid argument atan2(), atan2f(), atan2l() |x| = |y| = infinity Invalid argument atand2(), atand2f(), atand2l() x = y = 0 Invalid argument atand2(), atand2f(), atand2l() |x| = |y| = infinity Invalid argument ----------------------------------------------------------------------------------- The following table lists boundary values used by these functions: --------------------------------------------------------------------- Value Data Hexadecimal Value Decimal Value Name Type --------------------------------------------------------------------- (180/pi) S_FLOAT 00000039 8.028849e-44 * min_float T_FLOAT 0000000000000039 2.830787630910868e-322 --------------------------------------------------------------------- delim off sin(3)
All times are GMT -4. The time now is 02:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy