Gobsmacked by ksh93 floating point arithmetic.


 
Thread Tools Search this Thread
Operating Systems OS X (Apple) Gobsmacked by ksh93 floating point arithmetic.
Prev   Next
# 1  
Old 10-15-2018
Gobsmacked by ksh93 floating point arithmetic.

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...
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

BC calculation for floating (invalid arithmetic operator )

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

2. Shell Programming and Scripting

floating point arithmetic operation error

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)
Discussion started by: piynik
2 Replies

3. Programming

Floating Point

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)
Discussion started by: Slasho
9 Replies

4. Shell Programming and Scripting

Arithmetic in floating point

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)
Discussion started by: sumit the cool
6 Replies

5. Shell Programming and Scripting

floating point numbers in if

# if > then > echo "1" > else > echo "2" > fi -bash: How can i compare floating point numbers inside statement? (15 Replies)
Discussion started by: proactiveaditya
15 Replies

6. Shell Programming and Scripting

how to compare 2 floating point no.

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)
Discussion started by: useless79
1 Replies

7. Programming

Floating point Emulator

what is floating point emulator(FPE)? where and why it is used? (1 Reply)
Discussion started by: pgmfourms
1 Replies

8. Linux

Floating Point Exception

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)
Discussion started by: Mandar123
3 Replies

9. Shell Programming and Scripting

Rounding off the value of Floating point value

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)
Discussion started by: damansingh
7 Replies

10. Programming

floating point problem

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)
Discussion started by: vijlak
4 Replies
Login or Register to Ask a Question