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:
Results so far on OSX 10.13.6, default bash terminal calling ksh from the script:
Will be working on basic TRIG functions next.
Enjoy...
I am working on limited basic set of maths routines for ksh93 that can be sourced as . ./ksh_math.sh
Notice that the Korn shell doesn't need that: There is a variable FPATH, which works quite like PATH, but for functions: You set it to a (list of) directory/ies and every function not yet defined will be searched there. It is possible to build "libraries" that way by collecting functions into a certain directory.
In fact i use this feature heavily in my scripts. Here is my "standard script template":
where f_usage and f_env are functions in this library. Here is f_env:
Notice that there is a variable "DEVELOP": set it to any value and the script will use not the library in /usr/local/lib/ksh but the one in ~/lib. This way you can have a personal copy of the lib and tinker with it without affecting other scripts using the same functions. Also notice that i have some logging functions which all write to a continuous log defined here (/usr/local/log/system.log and /usr/local/log/system.err).
If you are interested i can eventually publish more functions from my library.
@Corona: ksh93 is a widely used shell. In every AIX version since 5L it is included (as ksh93) and in most Linux distributions it is part of the installable base. AIX uses a ksh88 (as ksh and as sh) as the default shell since AIX 4 (about 1997).
Bakunin, why not using logger to log ?
On first glance, looks like the script(s) should stay portable, perhaps a bit shorter.
First, i tried hard to make the whole thing as independent from it surroundings as possible. Up to now, the library has worked on Linux (SLES, RHEL, centOS, Fedora, OpenVZ), Solaris, HP-Ux, and AIX while being developed mainly on AIX. It also works on both ksh88 and ksh93 and the most part of it even on bash. Introducing logger as a prerequisite would hurt that goal.
Second: i am terminally lazy! When i started the library aobunt 20 years ago logging was one of the first things i implemented. Since it worked (and worked well, for my purposes) i never got around to change it.
@bakunin
I like the template idea and will use it when I am happy with the results.
@all the viewers
In the code are two attempts at creating SINE(X).
The first uses ANGLE in degrees and this is my choice at the moment because:
1: The results are consistent to 8 decimal places to the Google calculator values. (NOTE: printf rounds at the 8th decimal place.)
2: Number 1: gives the correct result irrespective of ANGLEs greater than 360 degrees.
However...
3: The RADIAN method is good enough for the first quadrant but creeping errors start to begin beyond that due to PRECISION and rounding.
4: For RADIAN values greater than 2*PI these creeping errors become large and when greater than 6*PI even 5 decimal places is not good enough.
The RADIAN version is commented out along with test code so experimenters can see these anomalies for themselves.
Results, OSX 10.13.6, default bask terminal calling ksh.
Compare the angles with those from Google inside the code.
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)
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)
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)
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)
Hi,
see the simple code below
double i;
i=8080.9940;
printf(" val :%.30f\n",i);
output i m getting is
val :8080.993999999999700000000000000
when i m expecting
val :8080.9940
what happens?how can i avoid it?
thanks... (2 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 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)
hi, :)
I have a file like this
10.456
123.567
456.876
234.987
........
.......
What i want to do is ia have to add all those numbers and put the result in some other file.
Any help pls.
cheers
RRK (8 Replies)