Files
42_EXT_05_computorv1/tester.sh
2026-06-05 12:14:21 +02:00

540 lines
37 KiB
Bash

#!/bin/bash
# ----------------------------------------------------------------------
# COLORS
# ----------------------------------------------------------------------
GRAY="\e[0;30m"
RED="\e[0;31m"
GREEN="\e[0;32m"
YELLOW="\e[0;33m"
BLUE="\e[0;34m"
PURPLE="\e[0;35m"
CYAN="\e[0;36m"
WHITE="\e[0;37m"
B_GRAY="\e[1;30m"
B_RED="\e[1;31m"
B_GREEN="\e[1;32m"
B_YELLOW="\e[1;33m"
B_BLUE="\e[1;34m"
B_PURPLE="\e[1;35m"
B_CYAN="\e[1;36m"
B_WHITE="\e[1;37m"
RESET="\e[0m"
# ----------------------------------------------------------------------
# CONFIGURATION
# ----------------------------------------------------------------------
NAME="computor"
BINARY="./$NAME"
if [[ ! -x "$BINARY" ]]; then
echo -e >&2 $B_RED"Error:$RESET binary $B_PURPLE'$BINARY'$RESET not found or not executable."
echo >&2 "Did you compile your C program?"
exit 1
fi
# flags
SKIP_REDUCED=false
SKIP_SOLUTION=false
RUN_ONLY=false
FLAGS="" # default empty
# Parse command-line arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--skip-reduced) SKIP_REDUCED=true ;;
--skip-solution) SKIP_SOLUTION=true ;;
--run-only) RUN_ONLY=true ;;
-b) FLAGS="$FLAGS -b" ;; # append -b to FLAGS
-d) FLAGS="$FLAGS -d" ;; # append -d to FLAGS
*) echo "Unknown parameter passed: $1"; exit 1 ;;
esac
shift
done
# ----------------------------------------------------------------------
# TEST LOGIC
# ----------------------------------------------------------------------
run_test() {
local test_name="$1"
local input="$2"
local expected="$3"
local check_error="${4:-no_error}" # Default: false (compare output)
# If RUN_ONLY is true, skip all test logic and just run the binary
if [[ "$RUN_ONLY" == "true" ]]; then
printf $B_PURPLE"Running: '%s'$RESET\n" "$test_name"
printf "Input: '%s'\n" "$input"
printf "Output:\n"
printf "%s" "$input" | "$BINARY" $FLAGS 2>&1
printf "\n"
return
fi
printf $B_PURPLE"Test : '%s'$RESET - " "$test_name"
# Run the program and capture the output
out=$(printf "%s" "$input" | "$BINARY" $FLAGS 2>&1)
exit_code=$?
# If SKIP_REDUCED is true, remove the "Reduced form" line from both output and expected
if [[ "$SKIP_REDUCED" == "true" ]]; then
out=$(echo "$out" | grep -v "Reduced form:")
expected=$(echo "$expected" | grep -v "Reduced form:")
fi
# If SKIP_SOLUTION is true, remove all lines after the 2nd line following "Polynomial degree:"
if [[ "$SKIP_SOLUTION" == "true" ]]; then
# Get the line number of "Polynomial degree:"
line_num=$(echo "$out" | grep -n "Polynomial degree:" | head -1 | cut -d: -f1)
if [[ -n "$line_num" ]]; then
# Keep lines up to 1 lines after "Polynomial degree:"
out=$(echo "$out" | head -n $((line_num + 1)))
expected=$(echo "$expected" | head -n $((line_num + 1)))
fi
fi
# If check_error is true, verify if the output contains an error message or non-zero exit code
if [[ "$check_error" == "error" ]]; then
if [[ $exit_code -ne 0 || "$out" == *"Error"* ]]; then
printf $B_GREEN"PASS$RESET (Input: '%s')\n" "$input"
else
printf $B_RED"FAIL$RESET\n"
printf " "$B_WHITE"Input:$RESET '%s'\n" "$input"
printf " "$B_WHITE"Got:$RESET\n"
printf '%s\n' "$out" | sed 's/^/ | /'
printf " "$B_WHITE"Expected:$RESET an error (non-zero exit code or 'Error' in output: $exit_code)\n"
echo
fi
else
# Compare with expected output
if [[ "$out" == "$expected" ]]; then
printf $B_GREEN"PASS$RESET (Input: '%s')\n" "$input"
else
printf $B_RED"FAIL$RESET\n"
printf " "$B_WHITE"Input:$RESET '%s'\n" "$input"
printf " "$B_WHITE"Got:$RESET\n"
printf '%s\n' "$out" | sed 's/^/ | /'
printf " "$B_WHITE"Expected:$RESET\n"
printf '%s\n' "$expected" | sed 's/^/ | /'
echo
fi
fi
}
# ----------------------------------------------------------------------
# TESTS CASES
# ----------------------------------------------------------------------
run_test \
"1. degree 2" \
"3 * X^2 + 5 * X^1 - 2 * X^0 = 5 * X^1" "\
Reduced form: -2 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
√(2/3)
-√(2/3)"
run_test \
"2. degree 2" \
"3.4 * X^2 + 1 * X^1 - 2.0 * X^0 = 5 * X^1" "\
Reduced form: -2 * X^0 - 4 * X^1 + 3.4 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-0.378334
1.5548"
run_test \
"3. degree 2" \
"3 * X^2 + 2 * X^2 = 5 * X^1" "\
Reduced form: 0 * X^0 - 5 * X^1 + 5 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0
1"
run_test \
"4. flag -e" \
'-e "3 * X^2 + 2 * X - 7 * X^4 = 1 * X^4"' \
"" \
error
run_test \
"5. degree 2" \
"3*X^2 + 2X = 0" "\
Reduced form: 0 * X^0 + 2 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-0.666667
0"
run_test \
"6. degree 2" \
"3.4 * X^2 + 1 * X^1 - 2.0 * X^0 = 5.123 * X^1" "\
Reduced form: -2 * X^0 - 4.123 * X^1 + 3.4 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-0.371359
1.58401"
run_test \
"7. float eXponent" \
"3.4 * X^2 + 1 * X^1 - 2.0 * X^0 = 5 * X^1.2" \
"" \
error
run_test \
"8. degree 4" \
"3X^2 + 2X -7X^4 = X^4" "\
Reduced form: 0 * X^0 + 2 * X^1 + 3 * X^2 + 0 * X^3 - 8 * X^4 = 0
Polynomial degree: 4
The polynomial degree is strictly greater than 2, I can't solve."
run_test \
"9. degree 2" \
"3X² + 2X -7X¹ = X" "\
Reduced form: 0 * X^0 - 6 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0
2"
run_test \
"10. degree 2" \
"3 * X^2 + 2 * X - 7 * X^1 = X" "\
Reduced form: 0 * X^0 - 6 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0
2"
run_test \
"11. degree 2" \
"-3X² + 2X -7 = X" "\
Reduced form: -7 * X^0 + 1 * X^1 - 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly negative, the two complex solutions are:
0.166667 + 1.51841*i
0.166667 - 1.51841*i"
run_test \
"12. degree 2" \
"+3X² + 2X -7 = X" "\
Reduced form: -7 * X^0 + 1 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-1.70326
1.36992"
run_test \
"13. degree 2" \
"3X² + 0X -7 = X" "\
Reduced form: -7 * X^0 - 1 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-1.36992
1.70326"
run_test \
"14. degree 2" \
"3X² + 0X -0 = X" "\
Reduced form: 0 * X^0 - 1 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0
0.333333"
run_test \
"15. degree 2" \
"3X² + 2X -0 = X" "\
Reduced form: 0 * X^0 + 1 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-0.333333
0"
run_test \
"16. degree 1" \
"3X + 2X -0 = X" "\
Reduced form: 0 * X^0 + 4 * X^1 = 0
Polynomial degree: 1
The solution is:
0"
run_test \
"17. degree 2" \
"3X² + X -0 = X" "\
Reduced form: 0 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is equal to zero, the solution is:
0"
run_test \
"18. degree 2" \
"0X² + X -0 = X" "\
Reduced form: 0 * X^0 = 0
Any real number is a solution."
run_test \
"19. degree 5" \
"2X⁵ + X -0 = -7X^5" "\
Reduced form: 0 * X^0 + 1 * X^1 + 0 * X^2 + 0 * X^3 + 0 * X^4 + 9 * X^5 = 0
Polynomial degree: 5
The polynomial degree is strictly greater than 2, I can't solve."
run_test \
"20. degree 1" \
"2X + X -0 = -7X" "\
Reduced form: 0 * X^0 + 10 * X^1 = 0
Polynomial degree: 1
The solution is:
0"
run_test \
"21. degree 1" \
"2X + X -3 = -7X" "\
Reduced form: -3 * X^0 + 10 * X^1 = 0
Polynomial degree: 1
The solution is:
0.3"
run_test \
"22. degree 1" \
"-2X + X -3 = -7X" "\
Reduced form: -3 * X^0 + 6 * X^1 = 0
Polynomial degree: 1
The solution is:
0.5"
run_test \
"23. degree 2 without [=]" \
"3X^2" "\
Reduced form: 0 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is equal to zero, the solution is:
0"
run_test \
"24. degree 2" \
"3X^2 = 0" "\
Reduced form: 0 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is equal to zero, the solution is:
0"
run_test \
"25. degree 2" \
"3X^2 + 2 = 0" "\
Reduced form: 2 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly negative, the two complex solutions are:
i√(2/3)
-i√(2/3)"
run_test \
"26. degree 2 pure" \
"3 * X^2 + 5 * X^1 - 2 * X^0 = 5 * X" "\
Reduced form: -2 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
√(2/3)
-√(2/3)"
run_test \
"27. degree 2 pure" \
"9 * X^2 + 5 * X^1 - 2 * X^0 = 5 * X" "\
Reduced form: -2 * X^0 + 0 * X^1 + 9 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
√(2)/3
-√(2)/3"
run_test \
"28. degree 2 pure" \
"3 * X^2 + 5 * X^1 - 4 * X^0 = 5 * X" "\
Reduced form: -4 * X^0 + 0 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
2/√(3)
-2/√(3)"
run_test \
"29. degree 2 pure" \
"16 * X^2 + 5 * X^1 - 4 * X^0 = 5 * X" "\
Reduced form: -4 * X^0 + 0 * X^1 + 16 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
1/2
-1/2"
run_test \
"30. degree 2 pure" \
"4 * X^2 + 5 * X^1 - 16 * X^0 = 5 * X" "\
Reduced form: -16 * X^0 + 0 * X^1 + 4 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
2
-2"
run_test \
"31. degree 2" \
"3X² + 2X -7 = X" "\
Reduced form: -7 * X^0 + 1 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-1.70326
1.36992"
run_test \
"32. degree 2 sign -" \
"3X² + -2X -7 = 0" "\
Reduced form: -7 * X^0 - 2 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-1.23014
1.89681"
run_test \
"33. degree 2 float because big" \
"3X² + 12345678901234567X -7 = 0" "\
Reduced form: -7 * X^0 + 1.23457e+16 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-4.11523e+15
0"
run_test \
"34. degree 2 float because too big by 1" \
"3X² + 2147483648X -7 = 0" "\
Reduced form: -7 * X^0 + 2.14748e+09 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-7.15828e+08
0"
run_test \
"35. degree 2 float because too small by 1" \
"3X² + -2147483649X -7 = 0" "\
Reduced form: -7 * X^0 - 2.14748e+09 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0
7.15828e+08"
run_test \
"36. degree 2 int maX" \
"3X² + 2147483647X -7 = 0" "\
Reduced form: -7 * X^0 + 2.14748e+09 * X^1 + 3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
-7.15828e+08
0"
run_test \
"37. degree 2 eXponent too big" \
"3X²¹⁴⁷⁴⁸³⁶⁴⁷ + 2X -7 = 0" \
"" \
error
run_test \
"38. degree 2 big enough in superscript" \
"3X¹⁰²⁴ + 2X -7 = 0" "\
Reduced form: -7 * X^0 + 2 * X^1 + 0 * X^2 + 0 * X^3 + 0 * X^4 + 0 * X^5 + 0 * X^6 + 0 * X^7 + 0 * X^8 + 0 * X^9 + 0 * X^10 + 0 * X^11 + 0 * X^12 + 0 * X^13 + 0 * X^14 + 0 * X^15 + 0 * X^16 + 0 * X^17 + 0 * X^18 + 0 * X^19 + 0 * X^20 + 0 * X^21 + 0 * X^22 + 0 * X^23 + 0 * X^24 + 0 * X^25 + 0 * X^26 + 0 * X^27 + 0 * X^28 + 0 * X^29 + 0 * X^30 + 0 * X^31 + 0 * X^32 + 0 * X^33 + 0 * X^34 + 0 * X^35 + 0 * X^36 + 0 * X^37 + 0 * X^38 + 0 * X^39 + 0 * X^40 + 0 * X^41 + 0 * X^42 + 0 * X^43 + 0 * X^44 + 0 * X^45 + 0 * X^46 + 0 * X^47 + 0 * X^48 + 0 * X^49 + 0 * X^50 + 0 * X^51 + 0 * X^52 + 0 * X^53 + 0 * X^54 + 0 * X^55 + 0 * X^56 + 0 * X^57 + 0 * X^58 + 0 * X^59 + 0 * X^60 + 0 * X^61 + 0 * X^62 + 0 * X^63 + 0 * X^64 + 0 * X^65 + 0 * X^66 + 0 * X^67 + 0 * X^68 + 0 * X^69 + 0 * X^70 + 0 * X^71 + 0 * X^72 + 0 * X^73 + 0 * X^74 + 0 * X^75 + 0 * X^76 + 0 * X^77 + 0 * X^78 + 0 * X^79 + 0 * X^80 + 0 * X^81 + 0 * X^82 + 0 * X^83 + 0 * X^84 + 0 * X^85 + 0 * X^86 + 0 * X^87 + 0 * X^88 + 0 * X^89 + 0 * X^90 + 0 * X^91 + 0 * X^92 + 0 * X^93 + 0 * X^94 + 0 * X^95 + 0 * X^96 + 0 * X^97 + 0 * X^98 + 0 * X^99 + 0 * X^100 + 0 * X^101 + 0 * X^102 + 0 * X^103 + 0 * X^104 + 0 * X^105 + 0 * X^106 + 0 * X^107 + 0 * X^108 + 0 * X^109 + 0 * X^110 + 0 * X^111 + 0 * X^112 + 0 * X^113 + 0 * X^114 + 0 * X^115 + 0 * X^116 + 0 * X^117 + 0 * X^118 + 0 * X^119 + 0 * X^120 + 0 * X^121 + 0 * X^122 + 0 * X^123 + 0 * X^124 + 0 * X^125 + 0 * X^126 + 0 * X^127 + 0 * X^128 + 0 * X^129 + 0 * X^130 + 0 * X^131 + 0 * X^132 + 0 * X^133 + 0 * X^134 + 0 * X^135 + 0 * X^136 + 0 * X^137 + 0 * X^138 + 0 * X^139 + 0 * X^140 + 0 * X^141 + 0 * X^142 + 0 * X^143 + 0 * X^144 + 0 * X^145 + 0 * X^146 + 0 * X^147 + 0 * X^148 + 0 * X^149 + 0 * X^150 + 0 * X^151 + 0 * X^152 + 0 * X^153 + 0 * X^154 + 0 * X^155 + 0 * X^156 + 0 * X^157 + 0 * X^158 + 0 * X^159 + 0 * X^160 + 0 * X^161 + 0 * X^162 + 0 * X^163 + 0 * X^164 + 0 * X^165 + 0 * X^166 + 0 * X^167 + 0 * X^168 + 0 * X^169 + 0 * X^170 + 0 * X^171 + 0 * X^172 + 0 * X^173 + 0 * X^174 + 0 * X^175 + 0 * X^176 + 0 * X^177 + 0 * X^178 + 0 * X^179 + 0 * X^180 + 0 * X^181 + 0 * X^182 + 0 * X^183 + 0 * X^184 + 0 * X^185 + 0 * X^186 + 0 * X^187 + 0 * X^188 + 0 * X^189 + 0 * X^190 + 0 * X^191 + 0 * X^192 + 0 * X^193 + 0 * X^194 + 0 * X^195 + 0 * X^196 + 0 * X^197 + 0 * X^198 + 0 * X^199 + 0 * X^200 + 0 * X^201 + 0 * X^202 + 0 * X^203 + 0 * X^204 + 0 * X^205 + 0 * X^206 + 0 * X^207 + 0 * X^208 + 0 * X^209 + 0 * X^210 + 0 * X^211 + 0 * X^212 + 0 * X^213 + 0 * X^214 + 0 * X^215 + 0 * X^216 + 0 * X^217 + 0 * X^218 + 0 * X^219 + 0 * X^220 + 0 * X^221 + 0 * X^222 + 0 * X^223 + 0 * X^224 + 0 * X^225 + 0 * X^226 + 0 * X^227 + 0 * X^228 + 0 * X^229 + 0 * X^230 + 0 * X^231 + 0 * X^232 + 0 * X^233 + 0 * X^234 + 0 * X^235 + 0 * X^236 + 0 * X^237 + 0 * X^238 + 0 * X^239 + 0 * X^240 + 0 * X^241 + 0 * X^242 + 0 * X^243 + 0 * X^244 + 0 * X^245 + 0 * X^246 + 0 * X^247 + 0 * X^248 + 0 * X^249 + 0 * X^250 + 0 * X^251 + 0 * X^252 + 0 * X^253 + 0 * X^254 + 0 * X^255 + 0 * X^256 + 0 * X^257 + 0 * X^258 + 0 * X^259 + 0 * X^260 + 0 * X^261 + 0 * X^262 + 0 * X^263 + 0 * X^264 + 0 * X^265 + 0 * X^266 + 0 * X^267 + 0 * X^268 + 0 * X^269 + 0 * X^270 + 0 * X^271 + 0 * X^272 + 0 * X^273 + 0 * X^274 + 0 * X^275 + 0 * X^276 + 0 * X^277 + 0 * X^278 + 0 * X^279 + 0 * X^280 + 0 * X^281 + 0 * X^282 + 0 * X^283 + 0 * X^284 + 0 * X^285 + 0 * X^286 + 0 * X^287 + 0 * X^288 + 0 * X^289 + 0 * X^290 + 0 * X^291 + 0 * X^292 + 0 * X^293 + 0 * X^294 + 0 * X^295 + 0 * X^296 + 0 * X^297 + 0 * X^298 + 0 * X^299 + 0 * X^300 + 0 * X^301 + 0 * X^302 + 0 * X^303 + 0 * X^304 + 0 * X^305 + 0 * X^306 + 0 * X^307 + 0 * X^308 + 0 * X^309 + 0 * X^310 + 0 * X^311 + 0 * X^312 + 0 * X^313 + 0 * X^314 + 0 * X^315 + 0 * X^316 + 0 * X^317 + 0 * X^318 + 0 * X^319 + 0 * X^320 + 0 * X^321 + 0 * X^322 + 0 * X^323 + 0 * X^324 + 0 * X^325 + 0 * X^326 + 0 * X^327 + 0 * X^328 + 0 * X^329 + 0 * X^330 + 0 * X^331 + 0 * X^332 + 0 * X^333 + 0 * X^334 + 0 * X^335 + 0 * X^336 + 0 * X^337 + 0 * X^338 + 0 * X^339 + 0 * X^340 + 0 * X^341 + 0 * X^342 + 0 * X^343 + 0 * X^344 + 0 * X^345 + 0 * X^346 + 0 * X^347 + 0 * X^348 + 0 * X^349 + 0 * X^350 + 0 * X^351 + 0 * X^352 + 0 * X^353 + 0 * X^354 + 0 * X^355 + 0 * X^356 + 0 * X^357 + 0 * X^358 + 0 * X^359 + 0 * X^360 + 0 * X^361 + 0 * X^362 + 0 * X^363 + 0 * X^364 + 0 * X^365 + 0 * X^366 + 0 * X^367 + 0 * X^368 + 0 * X^369 + 0 * X^370 + 0 * X^371 + 0 * X^372 + 0 * X^373 + 0 * X^374 + 0 * X^375 + 0 * X^376 + 0 * X^377 + 0 * X^378 + 0 * X^379 + 0 * X^380 + 0 * X^381 + 0 * X^382 + 0 * X^383 + 0 * X^384 + 0 * X^385 + 0 * X^386 + 0 * X^387 + 0 * X^388 + 0 * X^389 + 0 * X^390 + 0 * X^391 + 0 * X^392 + 0 * X^393 + 0 * X^394 + 0 * X^395 + 0 * X^396 + 0 * X^397 + 0 * X^398 + 0 * X^399 + 0 * X^400 + 0 * X^401 + 0 * X^402 + 0 * X^403 + 0 * X^404 + 0 * X^405 + 0 * X^406 + 0 * X^407 + 0 * X^408 + 0 * X^409 + 0 * X^410 + 0 * X^411 + 0 * X^412 + 0 * X^413 + 0 * X^414 + 0 * X^415 + 0 * X^416 + 0 * X^417 + 0 * X^418 + 0 * X^419 + 0 * X^420 + 0 * X^421 + 0 * X^422 + 0 * X^423 + 0 * X^424 + 0 * X^425 + 0 * X^426 + 0 * X^427 + 0 * X^428 + 0 * X^429 + 0 * X^430 + 0 * X^431 + 0 * X^432 + 0 * X^433 + 0 * X^434 + 0 * X^435 + 0 * X^436 + 0 * X^437 + 0 * X^438 + 0 * X^439 + 0 * X^440 + 0 * X^441 + 0 * X^442 + 0 * X^443 + 0 * X^444 + 0 * X^445 + 0 * X^446 + 0 * X^447 + 0 * X^448 + 0 * X^449 + 0 * X^450 + 0 * X^451 + 0 * X^452 + 0 * X^453 + 0 * X^454 + 0 * X^455 + 0 * X^456 + 0 * X^457 + 0 * X^458 + 0 * X^459 + 0 * X^460 + 0 * X^461 + 0 * X^462 + 0 * X^463 + 0 * X^464 + 0 * X^465 + 0 * X^466 + 0 * X^467 + 0 * X^468 + 0 * X^469 + 0 * X^470 + 0 * X^471 + 0 * X^472 + 0 * X^473 + 0 * X^474 + 0 * X^475 + 0 * X^476 + 0 * X^477 + 0 * X^478 + 0 * X^479 + 0 * X^480 + 0 * X^481 + 0 * X^482 + 0 * X^483 + 0 * X^484 + 0 * X^485 + 0 * X^486 + 0 * X^487 + 0 * X^488 + 0 * X^489 + 0 * X^490 + 0 * X^491 + 0 * X^492 + 0 * X^493 + 0 * X^494 + 0 * X^495 + 0 * X^496 + 0 * X^497 + 0 * X^498 + 0 * X^499 + 0 * X^500 + 0 * X^501 + 0 * X^502 + 0 * X^503 + 0 * X^504 + 0 * X^505 + 0 * X^506 + 0 * X^507 + 0 * X^508 + 0 * X^509 + 0 * X^510 + 0 * X^511 + 0 * X^512 + 0 * X^513 + 0 * X^514 + 0 * X^515 + 0 * X^516 + 0 * X^517 + 0 * X^518 + 0 * X^519 + 0 * X^520 + 0 * X^521 + 0 * X^522 + 0 * X^523 + 0 * X^524 + 0 * X^525 + 0 * X^526 + 0 * X^527 + 0 * X^528 + 0 * X^529 + 0 * X^530 + 0 * X^531 + 0 * X^532 + 0 * X^533 + 0 * X^534 + 0 * X^535 + 0 * X^536 + 0 * X^537 + 0 * X^538 + 0 * X^539 + 0 * X^540 + 0 * X^541 + 0 * X^542 + 0 * X^543 + 0 * X^544 + 0 * X^545 + 0 * X^546 + 0 * X^547 + 0 * X^548 + 0 * X^549 + 0 * X^550 + 0 * X^551 + 0 * X^552 + 0 * X^553 + 0 * X^554 + 0 * X^555 + 0 * X^556 + 0 * X^557 + 0 * X^558 + 0 * X^559 + 0 * X^560 + 0 * X^561 + 0 * X^562 + 0 * X^563 + 0 * X^564 + 0 * X^565 + 0 * X^566 + 0 * X^567 + 0 * X^568 + 0 * X^569 + 0 * X^570 + 0 * X^571 + 0 * X^572 + 0 * X^573 + 0 * X^574 + 0 * X^575 + 0 * X^576 + 0 * X^577 + 0 * X^578 + 0 * X^579 + 0 * X^580 + 0 * X^581 + 0 * X^582 + 0 * X^583 + 0 * X^584 + 0 * X^585 + 0 * X^586 + 0 * X^587 + 0 * X^588 + 0 * X^589 + 0 * X^590 + 0 * X^591 + 0 * X^592 + 0 * X^593 + 0 * X^594 + 0 * X^595 + 0 * X^596 + 0 * X^597 + 0 * X^598 + 0 * X^599 + 0 * X^600 + 0 * X^601 + 0 * X^602 + 0 * X^603 + 0 * X^604 + 0 * X^605 + 0 * X^606 + 0 * X^607 + 0 * X^608 + 0 * X^609 + 0 * X^610 + 0 * X^611 + 0 * X^612 + 0 * X^613 + 0 * X^614 + 0 * X^615 + 0 * X^616 + 0 * X^617 + 0 * X^618 + 0 * X^619 + 0 * X^620 + 0 * X^621 + 0 * X^622 + 0 * X^623 + 0 * X^624 + 0 * X^625 + 0 * X^626 + 0 * X^627 + 0 * X^628 + 0 * X^629 + 0 * X^630 + 0 * X^631 + 0 * X^632 + 0 * X^633 + 0 * X^634 + 0 * X^635 + 0 * X^636 + 0 * X^637 + 0 * X^638 + 0 * X^639 + 0 * X^640 + 0 * X^641 + 0 * X^642 + 0 * X^643 + 0 * X^644 + 0 * X^645 + 0 * X^646 + 0 * X^647 + 0 * X^648 + 0 * X^649 + 0 * X^650 + 0 * X^651 + 0 * X^652 + 0 * X^653 + 0 * X^654 + 0 * X^655 + 0 * X^656 + 0 * X^657 + 0 * X^658 + 0 * X^659 + 0 * X^660 + 0 * X^661 + 0 * X^662 + 0 * X^663 + 0 * X^664 + 0 * X^665 + 0 * X^666 + 0 * X^667 + 0 * X^668 + 0 * X^669 + 0 * X^670 + 0 * X^671 + 0 * X^672 + 0 * X^673 + 0 * X^674 + 0 * X^675 + 0 * X^676 + 0 * X^677 + 0 * X^678 + 0 * X^679 + 0 * X^680 + 0 * X^681 + 0 * X^682 + 0 * X^683 + 0 * X^684 + 0 * X^685 + 0 * X^686 + 0 * X^687 + 0 * X^688 + 0 * X^689 + 0 * X^690 + 0 * X^691 + 0 * X^692 + 0 * X^693 + 0 * X^694 + 0 * X^695 + 0 * X^696 + 0 * X^697 + 0 * X^698 + 0 * X^699 + 0 * X^700 + 0 * X^701 + 0 * X^702 + 0 * X^703 + 0 * X^704 + 0 * X^705 + 0 * X^706 + 0 * X^707 + 0 * X^708 + 0 * X^709 + 0 * X^710 + 0 * X^711 + 0 * X^712 + 0 * X^713 + 0 * X^714 + 0 * X^715 + 0 * X^716 + 0 * X^717 + 0 * X^718 + 0 * X^719 + 0 * X^720 + 0 * X^721 + 0 * X^722 + 0 * X^723 + 0 * X^724 + 0 * X^725 + 0 * X^726 + 0 * X^727 + 0 * X^728 + 0 * X^729 + 0 * X^730 + 0 * X^731 + 0 * X^732 + 0 * X^733 + 0 * X^734 + 0 * X^735 + 0 * X^736 + 0 * X^737 + 0 * X^738 + 0 * X^739 + 0 * X^740 + 0 * X^741 + 0 * X^742 + 0 * X^743 + 0 * X^744 + 0 * X^745 + 0 * X^746 + 0 * X^747 + 0 * X^748 + 0 * X^749 + 0 * X^750 + 0 * X^751 + 0 * X^752 + 0 * X^753 + 0 * X^754 + 0 * X^755 + 0 * X^756 + 0 * X^757 + 0 * X^758 + 0 * X^759 + 0 * X^760 + 0 * X^761 + 0 * X^762 + 0 * X^763 + 0 * X^764 + 0 * X^765 + 0 * X^766 + 0 * X^767 + 0 * X^768 + 0 * X^769 + 0 * X^770 + 0 * X^771 + 0 * X^772 + 0 * X^773 + 0 * X^774 + 0 * X^775 + 0 * X^776 + 0 * X^777 + 0 * X^778 + 0 * X^779 + 0 * X^780 + 0 * X^781 + 0 * X^782 + 0 * X^783 + 0 * X^784 + 0 * X^785 + 0 * X^786 + 0 * X^787 + 0 * X^788 + 0 * X^789 + 0 * X^790 + 0 * X^791 + 0 * X^792 + 0 * X^793 + 0 * X^794 + 0 * X^795 + 0 * X^796 + 0 * X^797 + 0 * X^798 + 0 * X^799 + 0 * X^800 + 0 * X^801 + 0 * X^802 + 0 * X^803 + 0 * X^804 + 0 * X^805 + 0 * X^806 + 0 * X^807 + 0 * X^808 + 0 * X^809 + 0 * X^810 + 0 * X^811 + 0 * X^812 + 0 * X^813 + 0 * X^814 + 0 * X^815 + 0 * X^816 + 0 * X^817 + 0 * X^818 + 0 * X^819 + 0 * X^820 + 0 * X^821 + 0 * X^822 + 0 * X^823 + 0 * X^824 + 0 * X^825 + 0 * X^826 + 0 * X^827 + 0 * X^828 + 0 * X^829 + 0 * X^830 + 0 * X^831 + 0 * X^832 + 0 * X^833 + 0 * X^834 + 0 * X^835 + 0 * X^836 + 0 * X^837 + 0 * X^838 + 0 * X^839 + 0 * X^840 + 0 * X^841 + 0 * X^842 + 0 * X^843 + 0 * X^844 + 0 * X^845 + 0 * X^846 + 0 * X^847 + 0 * X^848 + 0 * X^849 + 0 * X^850 + 0 * X^851 + 0 * X^852 + 0 * X^853 + 0 * X^854 + 0 * X^855 + 0 * X^856 + 0 * X^857 + 0 * X^858 + 0 * X^859 + 0 * X^860 + 0 * X^861 + 0 * X^862 + 0 * X^863 + 0 * X^864 + 0 * X^865 + 0 * X^866 + 0 * X^867 + 0 * X^868 + 0 * X^869 + 0 * X^870 + 0 * X^871 + 0 * X^872 + 0 * X^873 + 0 * X^874 + 0 * X^875 + 0 * X^876 + 0 * X^877 + 0 * X^878 + 0 * X^879 + 0 * X^880 + 0 * X^881 + 0 * X^882 + 0 * X^883 + 0 * X^884 + 0 * X^885 + 0 * X^886 + 0 * X^887 + 0 * X^888 + 0 * X^889 + 0 * X^890 + 0 * X^891 + 0 * X^892 + 0 * X^893 + 0 * X^894 + 0 * X^895 + 0 * X^896 + 0 * X^897 + 0 * X^898 + 0 * X^899 + 0 * X^900 + 0 * X^901 + 0 * X^902 + 0 * X^903 + 0 * X^904 + 0 * X^905 + 0 * X^906 + 0 * X^907 + 0 * X^908 + 0 * X^909 + 0 * X^910 + 0 * X^911 + 0 * X^912 + 0 * X^913 + 0 * X^914 + 0 * X^915 + 0 * X^916 + 0 * X^917 + 0 * X^918 + 0 * X^919 + 0 * X^920 + 0 * X^921 + 0 * X^922 + 0 * X^923 + 0 * X^924 + 0 * X^925 + 0 * X^926 + 0 * X^927 + 0 * X^928 + 0 * X^929 + 0 * X^930 + 0 * X^931 + 0 * X^932 + 0 * X^933 + 0 * X^934 + 0 * X^935 + 0 * X^936 + 0 * X^937 + 0 * X^938 + 0 * X^939 + 0 * X^940 + 0 * X^941 + 0 * X^942 + 0 * X^943 + 0 * X^944 + 0 * X^945 + 0 * X^946 + 0 * X^947 + 0 * X^948 + 0 * X^949 + 0 * X^950 + 0 * X^951 + 0 * X^952 + 0 * X^953 + 0 * X^954 + 0 * X^955 + 0 * X^956 + 0 * X^957 + 0 * X^958 + 0 * X^959 + 0 * X^960 + 0 * X^961 + 0 * X^962 + 0 * X^963 + 0 * X^964 + 0 * X^965 + 0 * X^966 + 0 * X^967 + 0 * X^968 + 0 * X^969 + 0 * X^970 + 0 * X^971 + 0 * X^972 + 0 * X^973 + 0 * X^974 + 0 * X^975 + 0 * X^976 + 0 * X^977 + 0 * X^978 + 0 * X^979 + 0 * X^980 + 0 * X^981 + 0 * X^982 + 0 * X^983 + 0 * X^984 + 0 * X^985 + 0 * X^986 + 0 * X^987 + 0 * X^988 + 0 * X^989 + 0 * X^990 + 0 * X^991 + 0 * X^992 + 0 * X^993 + 0 * X^994 + 0 * X^995 + 0 * X^996 + 0 * X^997 + 0 * X^998 + 0 * X^999 + 0 * X^1000 + 0 * X^1001 + 0 * X^1002 + 0 * X^1003 + 0 * X^1004 + 0 * X^1005 + 0 * X^1006 + 0 * X^1007 + 0 * X^1008 + 0 * X^1009 + 0 * X^1010 + 0 * X^1011 + 0 * X^1012 + 0 * X^1013 + 0 * X^1014 + 0 * X^1015 + 0 * X^1016 + 0 * X^1017 + 0 * X^1018 + 0 * X^1019 + 0 * X^1020 + 0 * X^1021 + 0 * X^1022 + 0 * X^1023 + 3 * X^1024 = 0
Polynomial degree: 1024
The polynomial degree is strictly greater than 2, I can't solve."
run_test \
"39. degree 2 big enough in digits" \
"3X^1024 + 2X -7 = 0" "\
Reduced form: -7 * X^0 + 2 * X^1 + 0 * X^2 + 0 * X^3 + 0 * X^4 + 0 * X^5 + 0 * X^6 + 0 * X^7 + 0 * X^8 + 0 * X^9 + 0 * X^10 + 0 * X^11 + 0 * X^12 + 0 * X^13 + 0 * X^14 + 0 * X^15 + 0 * X^16 + 0 * X^17 + 0 * X^18 + 0 * X^19 + 0 * X^20 + 0 * X^21 + 0 * X^22 + 0 * X^23 + 0 * X^24 + 0 * X^25 + 0 * X^26 + 0 * X^27 + 0 * X^28 + 0 * X^29 + 0 * X^30 + 0 * X^31 + 0 * X^32 + 0 * X^33 + 0 * X^34 + 0 * X^35 + 0 * X^36 + 0 * X^37 + 0 * X^38 + 0 * X^39 + 0 * X^40 + 0 * X^41 + 0 * X^42 + 0 * X^43 + 0 * X^44 + 0 * X^45 + 0 * X^46 + 0 * X^47 + 0 * X^48 + 0 * X^49 + 0 * X^50 + 0 * X^51 + 0 * X^52 + 0 * X^53 + 0 * X^54 + 0 * X^55 + 0 * X^56 + 0 * X^57 + 0 * X^58 + 0 * X^59 + 0 * X^60 + 0 * X^61 + 0 * X^62 + 0 * X^63 + 0 * X^64 + 0 * X^65 + 0 * X^66 + 0 * X^67 + 0 * X^68 + 0 * X^69 + 0 * X^70 + 0 * X^71 + 0 * X^72 + 0 * X^73 + 0 * X^74 + 0 * X^75 + 0 * X^76 + 0 * X^77 + 0 * X^78 + 0 * X^79 + 0 * X^80 + 0 * X^81 + 0 * X^82 + 0 * X^83 + 0 * X^84 + 0 * X^85 + 0 * X^86 + 0 * X^87 + 0 * X^88 + 0 * X^89 + 0 * X^90 + 0 * X^91 + 0 * X^92 + 0 * X^93 + 0 * X^94 + 0 * X^95 + 0 * X^96 + 0 * X^97 + 0 * X^98 + 0 * X^99 + 0 * X^100 + 0 * X^101 + 0 * X^102 + 0 * X^103 + 0 * X^104 + 0 * X^105 + 0 * X^106 + 0 * X^107 + 0 * X^108 + 0 * X^109 + 0 * X^110 + 0 * X^111 + 0 * X^112 + 0 * X^113 + 0 * X^114 + 0 * X^115 + 0 * X^116 + 0 * X^117 + 0 * X^118 + 0 * X^119 + 0 * X^120 + 0 * X^121 + 0 * X^122 + 0 * X^123 + 0 * X^124 + 0 * X^125 + 0 * X^126 + 0 * X^127 + 0 * X^128 + 0 * X^129 + 0 * X^130 + 0 * X^131 + 0 * X^132 + 0 * X^133 + 0 * X^134 + 0 * X^135 + 0 * X^136 + 0 * X^137 + 0 * X^138 + 0 * X^139 + 0 * X^140 + 0 * X^141 + 0 * X^142 + 0 * X^143 + 0 * X^144 + 0 * X^145 + 0 * X^146 + 0 * X^147 + 0 * X^148 + 0 * X^149 + 0 * X^150 + 0 * X^151 + 0 * X^152 + 0 * X^153 + 0 * X^154 + 0 * X^155 + 0 * X^156 + 0 * X^157 + 0 * X^158 + 0 * X^159 + 0 * X^160 + 0 * X^161 + 0 * X^162 + 0 * X^163 + 0 * X^164 + 0 * X^165 + 0 * X^166 + 0 * X^167 + 0 * X^168 + 0 * X^169 + 0 * X^170 + 0 * X^171 + 0 * X^172 + 0 * X^173 + 0 * X^174 + 0 * X^175 + 0 * X^176 + 0 * X^177 + 0 * X^178 + 0 * X^179 + 0 * X^180 + 0 * X^181 + 0 * X^182 + 0 * X^183 + 0 * X^184 + 0 * X^185 + 0 * X^186 + 0 * X^187 + 0 * X^188 + 0 * X^189 + 0 * X^190 + 0 * X^191 + 0 * X^192 + 0 * X^193 + 0 * X^194 + 0 * X^195 + 0 * X^196 + 0 * X^197 + 0 * X^198 + 0 * X^199 + 0 * X^200 + 0 * X^201 + 0 * X^202 + 0 * X^203 + 0 * X^204 + 0 * X^205 + 0 * X^206 + 0 * X^207 + 0 * X^208 + 0 * X^209 + 0 * X^210 + 0 * X^211 + 0 * X^212 + 0 * X^213 + 0 * X^214 + 0 * X^215 + 0 * X^216 + 0 * X^217 + 0 * X^218 + 0 * X^219 + 0 * X^220 + 0 * X^221 + 0 * X^222 + 0 * X^223 + 0 * X^224 + 0 * X^225 + 0 * X^226 + 0 * X^227 + 0 * X^228 + 0 * X^229 + 0 * X^230 + 0 * X^231 + 0 * X^232 + 0 * X^233 + 0 * X^234 + 0 * X^235 + 0 * X^236 + 0 * X^237 + 0 * X^238 + 0 * X^239 + 0 * X^240 + 0 * X^241 + 0 * X^242 + 0 * X^243 + 0 * X^244 + 0 * X^245 + 0 * X^246 + 0 * X^247 + 0 * X^248 + 0 * X^249 + 0 * X^250 + 0 * X^251 + 0 * X^252 + 0 * X^253 + 0 * X^254 + 0 * X^255 + 0 * X^256 + 0 * X^257 + 0 * X^258 + 0 * X^259 + 0 * X^260 + 0 * X^261 + 0 * X^262 + 0 * X^263 + 0 * X^264 + 0 * X^265 + 0 * X^266 + 0 * X^267 + 0 * X^268 + 0 * X^269 + 0 * X^270 + 0 * X^271 + 0 * X^272 + 0 * X^273 + 0 * X^274 + 0 * X^275 + 0 * X^276 + 0 * X^277 + 0 * X^278 + 0 * X^279 + 0 * X^280 + 0 * X^281 + 0 * X^282 + 0 * X^283 + 0 * X^284 + 0 * X^285 + 0 * X^286 + 0 * X^287 + 0 * X^288 + 0 * X^289 + 0 * X^290 + 0 * X^291 + 0 * X^292 + 0 * X^293 + 0 * X^294 + 0 * X^295 + 0 * X^296 + 0 * X^297 + 0 * X^298 + 0 * X^299 + 0 * X^300 + 0 * X^301 + 0 * X^302 + 0 * X^303 + 0 * X^304 + 0 * X^305 + 0 * X^306 + 0 * X^307 + 0 * X^308 + 0 * X^309 + 0 * X^310 + 0 * X^311 + 0 * X^312 + 0 * X^313 + 0 * X^314 + 0 * X^315 + 0 * X^316 + 0 * X^317 + 0 * X^318 + 0 * X^319 + 0 * X^320 + 0 * X^321 + 0 * X^322 + 0 * X^323 + 0 * X^324 + 0 * X^325 + 0 * X^326 + 0 * X^327 + 0 * X^328 + 0 * X^329 + 0 * X^330 + 0 * X^331 + 0 * X^332 + 0 * X^333 + 0 * X^334 + 0 * X^335 + 0 * X^336 + 0 * X^337 + 0 * X^338 + 0 * X^339 + 0 * X^340 + 0 * X^341 + 0 * X^342 + 0 * X^343 + 0 * X^344 + 0 * X^345 + 0 * X^346 + 0 * X^347 + 0 * X^348 + 0 * X^349 + 0 * X^350 + 0 * X^351 + 0 * X^352 + 0 * X^353 + 0 * X^354 + 0 * X^355 + 0 * X^356 + 0 * X^357 + 0 * X^358 + 0 * X^359 + 0 * X^360 + 0 * X^361 + 0 * X^362 + 0 * X^363 + 0 * X^364 + 0 * X^365 + 0 * X^366 + 0 * X^367 + 0 * X^368 + 0 * X^369 + 0 * X^370 + 0 * X^371 + 0 * X^372 + 0 * X^373 + 0 * X^374 + 0 * X^375 + 0 * X^376 + 0 * X^377 + 0 * X^378 + 0 * X^379 + 0 * X^380 + 0 * X^381 + 0 * X^382 + 0 * X^383 + 0 * X^384 + 0 * X^385 + 0 * X^386 + 0 * X^387 + 0 * X^388 + 0 * X^389 + 0 * X^390 + 0 * X^391 + 0 * X^392 + 0 * X^393 + 0 * X^394 + 0 * X^395 + 0 * X^396 + 0 * X^397 + 0 * X^398 + 0 * X^399 + 0 * X^400 + 0 * X^401 + 0 * X^402 + 0 * X^403 + 0 * X^404 + 0 * X^405 + 0 * X^406 + 0 * X^407 + 0 * X^408 + 0 * X^409 + 0 * X^410 + 0 * X^411 + 0 * X^412 + 0 * X^413 + 0 * X^414 + 0 * X^415 + 0 * X^416 + 0 * X^417 + 0 * X^418 + 0 * X^419 + 0 * X^420 + 0 * X^421 + 0 * X^422 + 0 * X^423 + 0 * X^424 + 0 * X^425 + 0 * X^426 + 0 * X^427 + 0 * X^428 + 0 * X^429 + 0 * X^430 + 0 * X^431 + 0 * X^432 + 0 * X^433 + 0 * X^434 + 0 * X^435 + 0 * X^436 + 0 * X^437 + 0 * X^438 + 0 * X^439 + 0 * X^440 + 0 * X^441 + 0 * X^442 + 0 * X^443 + 0 * X^444 + 0 * X^445 + 0 * X^446 + 0 * X^447 + 0 * X^448 + 0 * X^449 + 0 * X^450 + 0 * X^451 + 0 * X^452 + 0 * X^453 + 0 * X^454 + 0 * X^455 + 0 * X^456 + 0 * X^457 + 0 * X^458 + 0 * X^459 + 0 * X^460 + 0 * X^461 + 0 * X^462 + 0 * X^463 + 0 * X^464 + 0 * X^465 + 0 * X^466 + 0 * X^467 + 0 * X^468 + 0 * X^469 + 0 * X^470 + 0 * X^471 + 0 * X^472 + 0 * X^473 + 0 * X^474 + 0 * X^475 + 0 * X^476 + 0 * X^477 + 0 * X^478 + 0 * X^479 + 0 * X^480 + 0 * X^481 + 0 * X^482 + 0 * X^483 + 0 * X^484 + 0 * X^485 + 0 * X^486 + 0 * X^487 + 0 * X^488 + 0 * X^489 + 0 * X^490 + 0 * X^491 + 0 * X^492 + 0 * X^493 + 0 * X^494 + 0 * X^495 + 0 * X^496 + 0 * X^497 + 0 * X^498 + 0 * X^499 + 0 * X^500 + 0 * X^501 + 0 * X^502 + 0 * X^503 + 0 * X^504 + 0 * X^505 + 0 * X^506 + 0 * X^507 + 0 * X^508 + 0 * X^509 + 0 * X^510 + 0 * X^511 + 0 * X^512 + 0 * X^513 + 0 * X^514 + 0 * X^515 + 0 * X^516 + 0 * X^517 + 0 * X^518 + 0 * X^519 + 0 * X^520 + 0 * X^521 + 0 * X^522 + 0 * X^523 + 0 * X^524 + 0 * X^525 + 0 * X^526 + 0 * X^527 + 0 * X^528 + 0 * X^529 + 0 * X^530 + 0 * X^531 + 0 * X^532 + 0 * X^533 + 0 * X^534 + 0 * X^535 + 0 * X^536 + 0 * X^537 + 0 * X^538 + 0 * X^539 + 0 * X^540 + 0 * X^541 + 0 * X^542 + 0 * X^543 + 0 * X^544 + 0 * X^545 + 0 * X^546 + 0 * X^547 + 0 * X^548 + 0 * X^549 + 0 * X^550 + 0 * X^551 + 0 * X^552 + 0 * X^553 + 0 * X^554 + 0 * X^555 + 0 * X^556 + 0 * X^557 + 0 * X^558 + 0 * X^559 + 0 * X^560 + 0 * X^561 + 0 * X^562 + 0 * X^563 + 0 * X^564 + 0 * X^565 + 0 * X^566 + 0 * X^567 + 0 * X^568 + 0 * X^569 + 0 * X^570 + 0 * X^571 + 0 * X^572 + 0 * X^573 + 0 * X^574 + 0 * X^575 + 0 * X^576 + 0 * X^577 + 0 * X^578 + 0 * X^579 + 0 * X^580 + 0 * X^581 + 0 * X^582 + 0 * X^583 + 0 * X^584 + 0 * X^585 + 0 * X^586 + 0 * X^587 + 0 * X^588 + 0 * X^589 + 0 * X^590 + 0 * X^591 + 0 * X^592 + 0 * X^593 + 0 * X^594 + 0 * X^595 + 0 * X^596 + 0 * X^597 + 0 * X^598 + 0 * X^599 + 0 * X^600 + 0 * X^601 + 0 * X^602 + 0 * X^603 + 0 * X^604 + 0 * X^605 + 0 * X^606 + 0 * X^607 + 0 * X^608 + 0 * X^609 + 0 * X^610 + 0 * X^611 + 0 * X^612 + 0 * X^613 + 0 * X^614 + 0 * X^615 + 0 * X^616 + 0 * X^617 + 0 * X^618 + 0 * X^619 + 0 * X^620 + 0 * X^621 + 0 * X^622 + 0 * X^623 + 0 * X^624 + 0 * X^625 + 0 * X^626 + 0 * X^627 + 0 * X^628 + 0 * X^629 + 0 * X^630 + 0 * X^631 + 0 * X^632 + 0 * X^633 + 0 * X^634 + 0 * X^635 + 0 * X^636 + 0 * X^637 + 0 * X^638 + 0 * X^639 + 0 * X^640 + 0 * X^641 + 0 * X^642 + 0 * X^643 + 0 * X^644 + 0 * X^645 + 0 * X^646 + 0 * X^647 + 0 * X^648 + 0 * X^649 + 0 * X^650 + 0 * X^651 + 0 * X^652 + 0 * X^653 + 0 * X^654 + 0 * X^655 + 0 * X^656 + 0 * X^657 + 0 * X^658 + 0 * X^659 + 0 * X^660 + 0 * X^661 + 0 * X^662 + 0 * X^663 + 0 * X^664 + 0 * X^665 + 0 * X^666 + 0 * X^667 + 0 * X^668 + 0 * X^669 + 0 * X^670 + 0 * X^671 + 0 * X^672 + 0 * X^673 + 0 * X^674 + 0 * X^675 + 0 * X^676 + 0 * X^677 + 0 * X^678 + 0 * X^679 + 0 * X^680 + 0 * X^681 + 0 * X^682 + 0 * X^683 + 0 * X^684 + 0 * X^685 + 0 * X^686 + 0 * X^687 + 0 * X^688 + 0 * X^689 + 0 * X^690 + 0 * X^691 + 0 * X^692 + 0 * X^693 + 0 * X^694 + 0 * X^695 + 0 * X^696 + 0 * X^697 + 0 * X^698 + 0 * X^699 + 0 * X^700 + 0 * X^701 + 0 * X^702 + 0 * X^703 + 0 * X^704 + 0 * X^705 + 0 * X^706 + 0 * X^707 + 0 * X^708 + 0 * X^709 + 0 * X^710 + 0 * X^711 + 0 * X^712 + 0 * X^713 + 0 * X^714 + 0 * X^715 + 0 * X^716 + 0 * X^717 + 0 * X^718 + 0 * X^719 + 0 * X^720 + 0 * X^721 + 0 * X^722 + 0 * X^723 + 0 * X^724 + 0 * X^725 + 0 * X^726 + 0 * X^727 + 0 * X^728 + 0 * X^729 + 0 * X^730 + 0 * X^731 + 0 * X^732 + 0 * X^733 + 0 * X^734 + 0 * X^735 + 0 * X^736 + 0 * X^737 + 0 * X^738 + 0 * X^739 + 0 * X^740 + 0 * X^741 + 0 * X^742 + 0 * X^743 + 0 * X^744 + 0 * X^745 + 0 * X^746 + 0 * X^747 + 0 * X^748 + 0 * X^749 + 0 * X^750 + 0 * X^751 + 0 * X^752 + 0 * X^753 + 0 * X^754 + 0 * X^755 + 0 * X^756 + 0 * X^757 + 0 * X^758 + 0 * X^759 + 0 * X^760 + 0 * X^761 + 0 * X^762 + 0 * X^763 + 0 * X^764 + 0 * X^765 + 0 * X^766 + 0 * X^767 + 0 * X^768 + 0 * X^769 + 0 * X^770 + 0 * X^771 + 0 * X^772 + 0 * X^773 + 0 * X^774 + 0 * X^775 + 0 * X^776 + 0 * X^777 + 0 * X^778 + 0 * X^779 + 0 * X^780 + 0 * X^781 + 0 * X^782 + 0 * X^783 + 0 * X^784 + 0 * X^785 + 0 * X^786 + 0 * X^787 + 0 * X^788 + 0 * X^789 + 0 * X^790 + 0 * X^791 + 0 * X^792 + 0 * X^793 + 0 * X^794 + 0 * X^795 + 0 * X^796 + 0 * X^797 + 0 * X^798 + 0 * X^799 + 0 * X^800 + 0 * X^801 + 0 * X^802 + 0 * X^803 + 0 * X^804 + 0 * X^805 + 0 * X^806 + 0 * X^807 + 0 * X^808 + 0 * X^809 + 0 * X^810 + 0 * X^811 + 0 * X^812 + 0 * X^813 + 0 * X^814 + 0 * X^815 + 0 * X^816 + 0 * X^817 + 0 * X^818 + 0 * X^819 + 0 * X^820 + 0 * X^821 + 0 * X^822 + 0 * X^823 + 0 * X^824 + 0 * X^825 + 0 * X^826 + 0 * X^827 + 0 * X^828 + 0 * X^829 + 0 * X^830 + 0 * X^831 + 0 * X^832 + 0 * X^833 + 0 * X^834 + 0 * X^835 + 0 * X^836 + 0 * X^837 + 0 * X^838 + 0 * X^839 + 0 * X^840 + 0 * X^841 + 0 * X^842 + 0 * X^843 + 0 * X^844 + 0 * X^845 + 0 * X^846 + 0 * X^847 + 0 * X^848 + 0 * X^849 + 0 * X^850 + 0 * X^851 + 0 * X^852 + 0 * X^853 + 0 * X^854 + 0 * X^855 + 0 * X^856 + 0 * X^857 + 0 * X^858 + 0 * X^859 + 0 * X^860 + 0 * X^861 + 0 * X^862 + 0 * X^863 + 0 * X^864 + 0 * X^865 + 0 * X^866 + 0 * X^867 + 0 * X^868 + 0 * X^869 + 0 * X^870 + 0 * X^871 + 0 * X^872 + 0 * X^873 + 0 * X^874 + 0 * X^875 + 0 * X^876 + 0 * X^877 + 0 * X^878 + 0 * X^879 + 0 * X^880 + 0 * X^881 + 0 * X^882 + 0 * X^883 + 0 * X^884 + 0 * X^885 + 0 * X^886 + 0 * X^887 + 0 * X^888 + 0 * X^889 + 0 * X^890 + 0 * X^891 + 0 * X^892 + 0 * X^893 + 0 * X^894 + 0 * X^895 + 0 * X^896 + 0 * X^897 + 0 * X^898 + 0 * X^899 + 0 * X^900 + 0 * X^901 + 0 * X^902 + 0 * X^903 + 0 * X^904 + 0 * X^905 + 0 * X^906 + 0 * X^907 + 0 * X^908 + 0 * X^909 + 0 * X^910 + 0 * X^911 + 0 * X^912 + 0 * X^913 + 0 * X^914 + 0 * X^915 + 0 * X^916 + 0 * X^917 + 0 * X^918 + 0 * X^919 + 0 * X^920 + 0 * X^921 + 0 * X^922 + 0 * X^923 + 0 * X^924 + 0 * X^925 + 0 * X^926 + 0 * X^927 + 0 * X^928 + 0 * X^929 + 0 * X^930 + 0 * X^931 + 0 * X^932 + 0 * X^933 + 0 * X^934 + 0 * X^935 + 0 * X^936 + 0 * X^937 + 0 * X^938 + 0 * X^939 + 0 * X^940 + 0 * X^941 + 0 * X^942 + 0 * X^943 + 0 * X^944 + 0 * X^945 + 0 * X^946 + 0 * X^947 + 0 * X^948 + 0 * X^949 + 0 * X^950 + 0 * X^951 + 0 * X^952 + 0 * X^953 + 0 * X^954 + 0 * X^955 + 0 * X^956 + 0 * X^957 + 0 * X^958 + 0 * X^959 + 0 * X^960 + 0 * X^961 + 0 * X^962 + 0 * X^963 + 0 * X^964 + 0 * X^965 + 0 * X^966 + 0 * X^967 + 0 * X^968 + 0 * X^969 + 0 * X^970 + 0 * X^971 + 0 * X^972 + 0 * X^973 + 0 * X^974 + 0 * X^975 + 0 * X^976 + 0 * X^977 + 0 * X^978 + 0 * X^979 + 0 * X^980 + 0 * X^981 + 0 * X^982 + 0 * X^983 + 0 * X^984 + 0 * X^985 + 0 * X^986 + 0 * X^987 + 0 * X^988 + 0 * X^989 + 0 * X^990 + 0 * X^991 + 0 * X^992 + 0 * X^993 + 0 * X^994 + 0 * X^995 + 0 * X^996 + 0 * X^997 + 0 * X^998 + 0 * X^999 + 0 * X^1000 + 0 * X^1001 + 0 * X^1002 + 0 * X^1003 + 0 * X^1004 + 0 * X^1005 + 0 * X^1006 + 0 * X^1007 + 0 * X^1008 + 0 * X^1009 + 0 * X^1010 + 0 * X^1011 + 0 * X^1012 + 0 * X^1013 + 0 * X^1014 + 0 * X^1015 + 0 * X^1016 + 0 * X^1017 + 0 * X^1018 + 0 * X^1019 + 0 * X^1020 + 0 * X^1021 + 0 * X^1022 + 0 * X^1023 + 3 * X^1024 = 0
Polynomial degree: 1024
The polynomial degree is strictly greater than 2, I can't solve."
run_test \
"40. degree 2 eXponent too big in digits" \
"3X^2147483647 + 2X -7 = 0" \
"" \
error
run_test \
"41. degree 2 eXponent too big by 1 in digits" \
"3X^1025 + 2X -7 = 0" \
"" \
error
run_test \
"42. degree 2 eXponent too big by 1 in superscript" \
"3X¹⁰²⁵ + 2X -7 = 0" \
"" \
error
run_test \
"43. degree 0" \
"6 = 6" "\
Reduced form: 0 * X^0 = 0
Any real number is a solution."
run_test \
"44. degree 0" \
"6 * X^0 = 6 * X^0" "\
Reduced form: 0 * X^0 = 0
Any real number is a solution."
run_test \
"45. sqrt root precision" \
"1.5X² + 3.7X + 2.4 = 0" "\
Reduced form: 2.4 * X^0 + 3.7 * X^1 + 1.5 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly negative, the two complex solutions are:
-1.23333 - 0.280872*i
-1.23333 + 0.280872*i"
run_test \
"46. subject 1" \
"5 * X^0 + 4 * X^1 - 9.3 * X^2 = 1 * X^0" "\
Reduced form: 4 * X^0 + 4 * X^1 - 9.3 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly positive, the two solutions are:
0.905239
-0.475131"
run_test \
"47. subject 2" \
"5 * X^0 + 4 * X^1 = 4 * X^0" "\
Reduced form: 1 * X^0 + 4 * X^1 = 0
Polynomial degree: 1
The solution is:
-0.25"
run_test \
"48. subject 3" \
"8 * X^0 - 6 * X^1 + 0 * X^2 - 5.6 * X^3 = 3 * X^0" "\
Reduced form: 5 * X^0 - 6 * X^1 + 0 * X^2 - 5.6 * X^3 = 0
Polynomial degree: 3
The polynomial degree is strictly greater than 2, I can't solve."
run_test \
"49. subject 4" \
"6 * X^0 = 6 * X^0" "\
Reduced form: 0 * X^0 = 0
Any real number is a solution."
run_test \
"50. subject 5" \
"10 * X^0 = 15 * X^0" "\
Reduced form: -5 * X^0 = 0
No solution."
run_test \
"51. subject 6" \
"1 * X^0 + 2 * X^1 + 5 * X^2 = 0" "\
Reduced form: 1 * X^0 + 2 * X^1 + 5 * X^2 = 0
Polynomial degree: 2
Discriminant is strictly negative, the two complex solutions are:
-1/5 + 2i/5
-1/5 - 2i/5"