Hi guys...
I am working on limited basic set of maths routines for ksh93 that can be sourced as . ./ksh_math.sh and I am gobsmacked by its capabilities.
Although some big guns may already know this, I didn't, and ksh93 is easily able to do floating point numbers to floating point powers and floating point roots.
WWOOWW!!
It is so simple to get the floating point NTH root of a floating point number, within limits of ksh93's floating point precision and rounding capabilities.
I started it earlier today and this is how far I have gotten:
Code:
#!/bin/ksh
# ksh_math.sh
# Basic Math extensions.
# CONSTANTS.
PI=3.14159265358979323
e=2.71828182845904523
# NTH ROOT of a positive floating point number.
# Called as:
# NthRoot NUMBER NTHROOT PRECISION
# ALL POSITIVE VALUES.
# NUMBER and NTHROOT can be floating point, PRECISION is an integer from 1 to 16.
# Returns NTHROOT as a variable.
NthRoot()
{
NUMBER=$1
NTHROOT=$2
PRECISION=$3
if [ "$PRECISION" = "" ] || [ $PRECISION -lt 1 ]
then
PRECISION=5
fi
NTHROOT=$( printf "%.${PRECISION}f" "$(( ${NUMBER}**(1.0/${NTHROOT}) ))" )
}
# SQUARE ROOT of a positive floating point number.
# Called as:
# Sqrt NUMBER PRECISION
# ALL POSITIVE VALUES.
# NUMBER can be floating point, PRECISION is an integer from 1 to 16.
# Returns SQRT as a variable.
Sqrt()
{
NUMBER=$1
NTHROOT=2.0
PRECISION=$2
NthRoot $NUMBER $NTHROOT $PRECISION
SQRT=$NTHROOT
}
Sqrt 813.7173 10
echo ""
echo "Floating Point Square Root:"
echo "KSH93 FP maths routines = $SQRT."
echo "From Google calculator = 28.5257304902."
echo ""
echo "Floating Point Number And Nth Root:"
NthRoot 10.5 12.3 11
echo "KSH93 FP maths routines = $NTHROOT."
echo "From Google calculator = 1.21066369814."
echo ""
Results so far on OSX 10.13.6, default bash terminal calling ksh from the script:
Code:
Last login: Mon Oct 15 16:59:39 on ttys000
AMIGA:amiga~> cd Desktop/Code/Shell
AMIGA:amiga~/Desktop/Code/Shell> ./ksh_math.sh
Floating Point Square Root:
KSH93 FP maths routines = 28.5257304902.
From Google calculator = 28.5257304902.
Floating Point Number And Nth Root:
KSH93 FP maths routines = 1.21066369814.
From Google calculator = 1.21066369814.
AMIGA:amiga~/Desktop/Code/Shell> _
Will be working on basic TRIG functions next.
Enjoy...
Hi all!
Hi all!
I am working with a problem to find the smallest floating point number that can be represented.
I am going in a loop ,stating with an initial value of 1.0 and then diving it by 10 each time thru the loop.
So the first time I am getting o.1 which I wanted.But from the next... (4 Replies)
Hello,
i have some variables say:
x=1.4
y=3.7
I wish to round off these values to :
x = 2 (after rounding off)
y = 4 (after rounding off)
I am stuck.
Please help. (7 Replies)
Hi,
I am compiling "HelloWorld" C progam on 32-bit CentOS and i want to execute it on 64-bit CentOS architecture.
For that i copied the a.out file from 32-bit to 64-bit machine, but while executing a.out file on 64bit machine I am getting "Floating point exception error".
But we can run... (3 Replies)
Hi,
Could any one tell me how to compare to floating point no. using test command. As -eq option works on only intergers.
i=5.4
if
then
echo "equal"
else
echo "not equal"
fi
here output will be equal even though no. are unequal.
Thanks,
ravi (1 Reply)
is it not possible to simply di aritmetic without using bc or awk
i have tried folllowing operatrions but they support only integer types plz suggest me code for floating using values stored in the variables.the ans i get is integer and if i input floating values i get error numeric constant... (6 Replies)
Anyone help me i cant found the error of floating point
if needed, i added the code complete
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct
{
int hh;
int mm;
int ss;
char nom;
int punt;
}cancion;
typedef struct... (9 Replies)
I am writing a script in zsh shell, it fetchs a number from a file using the awk command, store it as a variable, which in my case is a small number 0.62000. I want to change this number by multiplying it by 1000 to become 620.0 using the command in the script
var2=$((var1*1000))
trouble is... (2 Replies)
Hi,
I wish to compare the CPU LOAD 1 min with 5mins and 15mins.
If 1 min's CPU LOAd spike 3% compare to 5 mins or 15 mins CPU Load, it is warning.
If 1 min's CPU LOAd spike 5% compare to 5 mins or 15 mins CPU Load, it is critical.
However I received following code error, I google it and... (10 Replies)
Discussion started by: alvintiow
10 Replies
LEARN ABOUT OPENSOLARIS
let
let(1) User Commands let(1)NAME
let - shell built-in function to evaluate one or more arithmetic expressions
SYNOPSIS
ksh
let arg...
ksh93
let [expr...]
DESCRIPTION
ksh
Each arg is a separate arithmetic expression to be evaluated.
ksh93
let evaluates each expr in the current shell environment as an arithmetic expression using ANSI C syntax. Variables names are shell vari-
ables and they are recursively evaluated as arithmetic expressions to get numerical values. let has been made obsolete by the ((...)) syn-
tax of ksh93(1) which does not require quoting of the operators to pass them as command arguments.
EXIT STATUS
ksh
ksh returns the following exit values:
0 The value of the last expression is non-zero.
1 The value of the last expression is zero.
ksh93
ksh93 returns the following exit values:
0 The last expr evaluates to a non-zero value.
>0 The last expr evaluates to 0 or an error occurred.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
SEE ALSO ksh(1), ksh93(1), set(1), typeset(1), attributes(5)SunOS 5.11 2 Nov 2007 let(1)