rewrite in nim

This commit is contained in:
array-in-a-matrix 2023-02-01 11:19:27 -05:00
parent 5fa84b93fb
commit df1258d1d9
5 changed files with 28 additions and 71 deletions

View file

@ -1,2 +1 @@
all:
gcc quadratic.c -lm -Wall -O3 -o "quadratic"

View file

@ -1,27 +0,0 @@
#!/bin/sh
ARG_A=$(whiptail --inputbox "Please enter the value for \"a\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "User cancelled input."
exit
fi
ARG_B=$(whiptail --inputbox "Please enter the value for \"b\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "User cancelled input."
exit
fi
ARG_C=$(whiptail --inputbox "Please enter the value for \"c\":" 10 50 --title "Quadratic Calculator" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus != 0 ]; then
echo "User cancelled input."
exit
fi
quadratic $ARG_A $ARG_B $ARG_C

View file

@ -1,42 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(int num_arg, char **args)
{
double num_A, num_B, num_C;
if (num_arg <= 1)
{
system("/bin/sh /home/linux/Documents/Projects/quadratic/quadratic-tui.sh"); //! need a better solution
}
else
{
num_A = atof(args[1]);
num_B = atof(args[2]);
num_C = atof(args[3]);
double radical = pow(num_B, 2) + (-4 * num_A * num_C);
if (radical < 0.0)
{
// roots are complex
double real_part = (-num_B) / (2 * num_A);
double imaginary_part = sqrt(radical * -1.0) / (2 * num_A);
printf("%g+%gi %g-%gi\n", real_part, imaginary_part, real_part, imaginary_part);
}
else
{
// roots are real
double numerator_1 = (-num_B) + sqrt(radical);
double numerator_2 = (-num_B) - sqrt(radical);
double zero_1_ptr = numerator_1 / (2 * num_A);
double zero_2_ptr = numerator_2 / (2 * num_A);
printf("%g\t %g\n", zero_1_ptr, zero_2_ptr);
};
};
return 0;
};

27
quadratic.nim Normal file
View file

@ -0,0 +1,27 @@
import os, math, strutils, strformat
var num_a, num_b, num_c: float
if paramCount() >= 3:
num_a = parseFloat(paramStr(1))
num_b = parseFloat(paramStr(2))
num_c = parseFloat(paramStr(3))
# else:
# launch ui to get numbers
let radical: float = num_b^2 + (-4 * num_a * num_c)
if radical < 0:
# complex roots
let real_part: float = -num_b / (2 * num_a)
let imaginary_part: float = sqrt(radical * -1) / (2 * num_a)
echo &"{real_part}+{imaginary_part}\t{real_part}-{imaginary_part}"
else:
# real roots
let numrator_1: float = -num_b + sqrt(radical)
let numrator_2: float = -num_b - sqrt(radical)
let solution_1: float = numrator_1 / (2 * num_a)
let solution_2: float = numrator_2 / (2 * num_a)
echo &"{solution_1}\t{solution_2}"

0
ui.nim Normal file
View file