Sponsored Content
Operating Systems OS X (Apple) Gobsmacked by ksh93 floating point arithmetic. Post 303024705 by wisecracker on Monday 15th of October 2018 12:28:18 PM
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...
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. Programming

Floating point Emulator

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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
OCI_FIELD_TYPE(3)														 OCI_FIELD_TYPE(3)

oci_field_type - Returns a field's data type name

SYNOPSIS
mixed oci_field_type (resource $statement, mixed $field) DESCRIPTION
Returns a field's data type name. PARAMETERS
o $statement - A valid OCI statement identifier. o $field - Can be the field's index (1-based) or name. RETURN VALUES
Returns the field data type as a string, or FALSE on errors. EXAMPLES
Example #1 oci_field_type(3) example <?php // Create the table with: // CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1), // clob_col CLOB, date_col DATE); $conn = oci_connect("hr", "hrpwd", "localhost/XE"); if (!$conn) { $m = oci_error(); trigger_error(htmlentities($m['message']), E_USER_ERROR); } $stid = oci_parse($conn, "SELECT * FROM mytab"); oci_execute($stid, OCI_DESCRIBE_ONLY); // Use OCI_DESCRIBE_ONLY if not fetching rows echo "<table border="1"> "; echo "<tr>"; echo "<th>Name</th>"; echo "<th>Type</th>"; echo "<th>Length</th>"; echo "</tr> "; $ncols = oci_num_fields($stid); for ($i = 1; $i <= $ncols; $i++) { $column_name = oci_field_name($stid, $i); $column_type = oci_field_type($stid, $i); $column_size = oci_field_size($stid, $i); echo "<tr>"; echo "<td>$column_name</td>"; echo "<td>$column_type</td>"; echo "<td>$column_size</td>"; echo "</tr> "; } echo "</table> "; // Outputs: // Name Type Length // NUMBER_COL NUMBER 22 // VARCHAR2_COL VARCHAR2 1 // CLOB_COL CLOB 4000 // DATE_COL DATE 7 oci_free_statement($stid); oci_close($conn); ?> NOTES
Note In PHP versions before 5.0.0 you must use ocicolumntype(3) instead. This name still can be used, it was left as alias of oci_field_type(3) for downwards compatability. This, however, is deprecated and not recommended. SEE ALSO
oci_num_fields(3), oci_field_name(3), oci_field_size(3). PHP Documentation Group OCI_FIELD_TYPE(3)
All times are GMT -4. The time now is 06:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy