Category: C# Computer Programming Language
Blog Entry © Wednesday, September 10, 2025, by James Pate Williams, Jr. Computing the Energies of Low Autocorrelation Binary Sequences (LABS) Using Two Computer Programming Languages, Namely C# and C++
Reference: 1512.02475
C# Results for the Length, L, of the LABS for L= 5 to 20 in steps of 1:
L = 5 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 2 00:00:00.004
Par Brute Force Search 2 00:00:00.019
Steepest Descent Local Search 2 00:00:00.021
Tabu Search 2 00:00:00.021
Branch and Bound Search 6 00:00:00.023
Simulated Annealing 2 00:00:00.105
Evolutionary Hill-Climber 2 00:00:00.150
Constrained Local Search 2 00:00:00.151
L = 6 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 7 00:00:00.000
Par Brute Force Search 7 00:00:00.000
Steepest Descent Local Search 7 00:00:00.000
Tabu Search 7 00:00:00.000
Branch and Bound Search 7 00:00:00.000
Simulated Annealing 7 00:00:00.081
Evolutionary Hill-Climber 7 00:00:00.131
Constrained Local Search 7 00:00:00.131
L = 7 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 3 00:00:00.000
Par Brute Force Search 3 00:00:00.000
Steepest Descent Local Search 3 00:00:00.000
Tabu Search 3 00:00:00.000
Branch and Bound Search 3 00:00:00.000
Simulated Annealing 3 00:00:00.088
Evolutionary Hill-Climber 3 00:00:00.134
Constrained Local Search 7 00:00:00.134
L = 8 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 8 00:00:00.000
Par Brute Force Search 8 00:00:00.000
Steepest Descent Local Search 8 00:00:00.000
Tabu Search 8 00:00:00.003
Branch and Bound Search 8 00:00:00.003
Simulated Annealing 8 00:00:00.096
Evolutionary Hill-Climber 8 00:00:00.154
Constrained Local Search 8 00:00:00.154
L = 9 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 12 00:00:00.000
Par Brute Force Search 12 00:00:00.002
Steepest Descent Local Search 12 00:00:00.002
Tabu Search 12 00:00:00.003
Branch and Bound Search 16 00:00:00.003
Simulated Annealing 12 00:00:00.104
Evolutionary Hill-Climber 12 00:00:00.186
Constrained Local Search 12 00:00:00.186
L = 10 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 13 00:00:00.000
Par Brute Force Search 13 00:00:00.005
Steepest Descent Local Search 13 00:00:00.005
Tabu Search 13 00:00:00.006
Branch and Bound Search 13 00:00:00.006
Simulated Annealing 13 00:00:00.116
Evolutionary Hill-Climber 13 00:00:00.203
Constrained Local Search 13 00:00:00.203
L = 11 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 5 00:00:00.002
Par Brute Force Search 5 00:00:00.005
Steepest Descent Local Search 5 00:00:00.005
Tabu Search 13 00:00:00.006
Branch and Bound Search 25 00:00:00.006
Simulated Annealing 5 00:00:00.127
Evolutionary Hill-Climber 5 00:00:00.482
Constrained Local Search 5 00:00:00.483
L = 12 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 10 00:00:00.007
Par Brute Force Search 10 00:00:00.010
Steepest Descent Local Search 10 00:00:00.010
Tabu Search 10 00:00:00.012
Branch and Bound Search 22 00:00:00.012
Simulated Annealing 10 00:00:00.144
Evolutionary Hill-Climber 10 00:00:00.511
Constrained Local Search 14 00:00:00.511
L = 13 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 6 00:00:00.010
Par Brute Force Search 6 00:00:00.012
Steepest Descent Local Search 14 00:00:00.013
Tabu Search 14 00:00:00.014
Branch and Bound Search 38 00:00:00.014
Simulated Annealing 6 00:00:00.159
Evolutionary Hill-Climber 6 00:00:00.598
Constrained Local Search 18 00:00:00.598
L = 14 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 19 00:00:00.018
Par Brute Force Search 19 00:00:00.022
Steepest Descent Local Search 19 00:00:00.022
Tabu Search 19 00:00:00.024
Branch and Bound Search 35 00:00:00.024
Simulated Annealing 19 00:00:00.183
Evolutionary Hill-Climber 19 00:00:00.716
Constrained Local Search 19 00:00:00.716
L = 15 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 15 00:00:00.029
Par Brute Force Search 15 00:00:00.038
Steepest Descent Local Search 23 00:00:00.038
Tabu Search 23 00:00:00.040
Branch and Bound Search 67 00:00:00.040
Simulated Annealing 15 00:00:00.212
Evolutionary Hill-Climber 15 00:00:00.835
Constrained Local Search 23 00:00:00.836
L = 16 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 24 00:00:00.061
Par Brute Force Search 24 00:00:00.081
Steepest Descent Local Search 24 00:00:00.081
Tabu Search 28 00:00:00.084
Branch and Bound Search 56 00:00:00.084
Simulated Annealing 24 00:00:00.285
Evolutionary Hill-Climber 24 00:00:00.942
Constrained Local Search 32 00:00:00.943
L = 17 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 32 00:00:00.108
Par Brute Force Search 32 00:00:00.140
Steepest Descent Local Search 32 00:00:00.140
Tabu Search 36 00:00:00.144
Branch and Bound Search 40 00:00:00.144
Simulated Annealing 32 00:00:00.351
Evolutionary Hill-Climber 32 00:00:01.091
Constrained Local Search 32 00:00:01.102
L = 18 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 25 00:00:00.222
Par Brute Force Search 25 00:00:00.292
Steepest Descent Local Search 41 00:00:00.292
Tabu Search 33 00:00:00.297
Branch and Bound Search 57 00:00:00.297
Simulated Annealing 25 00:00:00.524
Evolutionary Hill-Climber 25 00:00:01.367
Constrained Local Search 33 00:00:01.382
L = 19 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 29 00:00:00.458
Par Brute Force Search 29 00:00:00.601
Steepest Descent Local Search 37 00:00:00.601
Tabu Search 33 00:00:00.607
Branch and Bound Search 77 00:00:00.607
Simulated Annealing 29 00:00:00.853
Evolutionary Hill-Climber 29 00:00:01.770
Constrained Local Search 41 00:00:01.781
L = 20 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 26 00:00:00.965
Par Brute Force Search 26 00:00:01.267
Steepest Descent Local Search 34 00:00:01.267
Tabu Search 34 00:00:01.274
Branch and Bound Search 90 00:00:01.275
Simulated Annealing 34 00:00:01.542
Evolutionary Hill-Climber 26 00:00:02.568
Constrained Local Search 34 00:00:02.620
L = 21 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 26 00:00:02.262
Par Brute Force Search 26 00:00:02.934
Steepest Descent Local Search 50 00:00:02.935
Tabu Search 42 00:00:02.948
Branch and Bound Search 114 00:00:02.948
Simulated Annealing 26 00:00:03.243
Evolutionary Hill-Climber 26 00:00:05.560
Constrained Local Search 34 00:00:06.173
L = 22 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 39 00:00:04.501
Par Brute Force Search 39 00:00:05.873
Steepest Descent Local Search 63 00:00:05.874
Tabu Search 63 00:00:05.884
Branch and Bound Search 63 00:00:05.885
Simulated Annealing 39 00:00:06.208
Evolutionary Hill-Climber 39 00:00:08.843
Constrained Local Search 55 00:00:08.890
L = 23 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 47 00:00:09.389
Par Brute Force Search 47 00:00:12.330
Steepest Descent Local Search 51 00:00:12.331
Tabu Search 55 00:00:12.343
Branch and Bound Search 99 00:00:12.344
Simulated Annealing 51 00:00:12.698
Evolutionary Hill-Climber 47 00:00:15.520
Constrained Local Search 51 00:00:15.602
L = 24 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 36 00:00:20.155
Par Brute Force Search 36 00:00:26.232
Steepest Descent Local Search 60 00:00:26.233
Tabu Search 36 00:00:26.248
Branch and Bound Search 228 00:00:26.248
Simulated Annealing 60 00:00:26.628
Evolutionary Hill-Climber 36 00:00:29.648
Constrained Local Search 48 00:00:29.800
L = 25 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 36 00:00:43.116
Par Brute Force Search 36 00:00:56.254
Steepest Descent Local Search 68 00:00:56.255
Tabu Search 64 00:00:56.274
Branch and Bound Search 160 00:00:56.274
Simulated Annealing 64 00:00:56.695
Evolutionary Hill-Climber 36 00:01:00.119
Constrained Local Search 68 00:01:00.254
L = 26 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Seq Brute Force Search 45 00:01:30.359
Par Brute Force Search 45 00:02:02.335
Steepest Descent Local Search 61 00:02:02.336
Tabu Search 85 00:02:02.356
Branch and Bound Search 173 00:02:02.356
Simulated Annealing 53 00:02:02.792
Evolutionary Hill-Climber 45 00:02:06.516
Constrained Local Search 45 00:02:08.655
L = 27 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Steepest Descent Local Search 89 00:00:00.002
Tabu Search 77 00:00:00.026
Branch and Bound Search 269 00:00:00.027
Simulated Annealing 77 00:00:00.483
Evolutionary Hill-Climber 61 00:00:04.341
Constrained Local Search 61 00:00:05.445
L = 28 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Steepest Descent Local Search 94 00:00:00.002
Tabu Search 94 00:00:00.029
Branch and Bound Search 190 00:00:00.030
Simulated Annealing 70 00:00:00.523
Evolutionary Hill-Climber 50 00:00:04.700
Constrained Local Search 50 00:00:15.377
L = 29 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Steepest Descent Local Search 98 00:00:00.002
Tabu Search 94 00:00:00.031
Branch and Bound Search 278 00:00:00.032
Simulated Annealing 70 00:00:00.545
Evolutionary Hill-Climber 62 00:00:05.055
Constrained Local Search 62 00:01:12.474
L = 30 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Steepest Descent Local Search 123 00:00:00.002
Tabu Search 91 00:00:00.037
Branch and Bound Search 235 00:00:00.038
Simulated Annealing 91 00:00:00.592
Evolutionary Hill-Climber 67 00:00:05.482
Constrained Local Search 67 00:00:48.869
L = 31 Restarts = 10
Algorithm E Hrs:Min:Sec.MS
Steepest Descent Local Search 107 00:00:00.002
Tabu Search 95 00:00:00.044
Branch and Bound Search 291 00:00:00.045
Simulated Annealing 107 00:00:00.639
Evolutionary Hill-Climber 79 00:00:09.421
Constrained Local Search 75 00:04:06.581
Now for the C++ results which are somewhat disappointing:
L = 5 Restarts = 10
Algorithm E T(sec)
Brute Force Search 2 0.000
Steepest Descent Local Search 2 0.000
Tabu Search 2 0.006
Branch and Bound Search 2 0.000
Simulated Annealing 2 0.185
Evolutionary Hill Climber 2 0.044
Constrained Local Search 6 0.000
L = 6 Restarts = 10
Algorithm E T(sec)
Brute Force Search 7 0.000
Steepest Descent Local Search 7 0.000
Tabu Search 7 0.009
Branch and Bound Search 7 0.000
Simulated Annealing 7 0.183
Evolutionary Hill Climber 7 0.064
Constrained Local Search 7 0.000
L = 7 Restarts = 10
Algorithm E T(sec)
Brute Force Search 3 0.000
Steepest Descent Local Search 7 0.000
Tabu Search 7 0.011
Branch and Bound Search 7 0.000
Simulated Annealing 3 0.190
Evolutionary Hill Climber 3 0.043
Constrained Local Search 7 0.000
L = 8 Restarts = 10
Algorithm E T(sec)
Brute Force Search 8 0.000
Steepest Descent Local Search 8 0.000
Tabu Search 8 0.016
Branch and Bound Search 8 0.000
Simulated Annealing 8 0.192
Evolutionary Hill Climber 8 0.052
Constrained Local Search 12 0.000
L = 9 Restarts = 10
Algorithm E T(sec)
Brute Force Search 12 0.000
Steepest Descent Local Search 12 0.000
Tabu Search 12 0.020
Branch and Bound Search 16 0.001
Simulated Annealing 12 0.199
Evolutionary Hill Climber 12 0.065
Constrained Local Search 16 0.000
L = 10 Restarts = 10
Algorithm E T(sec)
Brute Force Search 13 0.001
Steepest Descent Local Search 21 0.000
Tabu Search 21 0.025
Branch and Bound Search 13 0.000
Simulated Annealing 13 0.200
Evolutionary Hill Climber 13 0.069
Constrained Local Search 37 0.000
L = 11 Restarts = 10
Algorithm E T(sec)
Brute Force Search 5 0.001
Steepest Descent Local Search 25 0.001
Tabu Search 25 0.028
Branch and Bound Search 29 0.000
Simulated Annealing 5 0.200
Evolutionary Hill Climber 5 0.324
Constrained Local Search 25 0.000
L = 12 Restarts = 10
Algorithm E T(sec)
Brute Force Search 10 0.003
Steepest Descent Local Search 22 0.001
Tabu Search 22 0.038
Branch and Bound Search 30 0.001
Simulated Annealing 10 0.206
Evolutionary Hill Climber 10 0.302
Constrained Local Search 54 0.000
L = 13 Restarts = 10
Algorithm E T(sec)
Brute Force Search 6 0.005
Steepest Descent Local Search 34 0.001
Tabu Search 34 0.025
Branch and Bound Search 30 0.000
Simulated Annealing 6 0.205
Evolutionary Hill Climber 6 0.356
Constrained Local Search 26 0.000
L = 14 Restarts = 10
Algorithm E T(sec)
Brute Force Search 19 0.012
Steepest Descent Local Search 27 0.001
Tabu Search 27 0.038
Branch and Bound Search 27 0.000
Simulated Annealing 19 0.216
Evolutionary Hill Climber 19 0.420
Constrained Local Search 43 0.000
L = 15 Restarts = 10
Algorithm E T(sec)
Brute Force Search 15 0.023
Steepest Descent Local Search 47 0.001
Tabu Search 47 0.039
Branch and Bound Search 47 0.001
Simulated Annealing 23 0.221
Evolutionary Hill Climber 23 0.448
Constrained Local Search 55 0.000
L = 16 Restarts = 10
Algorithm E T(sec)
Brute Force Search 24 0.043
Steepest Descent Local Search 32 0.001
Tabu Search 32 0.039
Branch and Bound Search 56 0.001
Simulated Annealing 24 0.229
Evolutionary Hill Climber 24 1.470
Constrained Local Search 112 0.000
L = 17 Restarts = 10
Algorithm E T(sec)
Brute Force Search 32 0.073
Steepest Descent Local Search 36 0.001
Tabu Search 36 0.044
Branch and Bound Search 52 0.001
Simulated Annealing 32 0.231
Evolutionary Hill Climber 32 1.733
Constrained Local Search 32 0.020
L = 18 Restarts = 10
Algorithm E T(sec)
Brute Force Search 25 0.122
Steepest Descent Local Search 57 0.001
Tabu Search 57 0.051
Branch and Bound Search 73 0.001
Simulated Annealing 33 0.241
Evolutionary Hill Climber 25 1.884
Constrained Local Search 49 0.000
L = 19 Restarts = 10
Algorithm E T(sec)
Brute Force Search 29 0.235
Steepest Descent Local Search 57 0.001
Tabu Search 57 0.066
Branch and Bound Search 57 0.001
Simulated Annealing 37 0.486
Evolutionary Hill Climber 33 2.071
Constrained Local Search 37 0.021
L = 20 Restarts = 10
Algorithm E T(sec)
Brute Force Search 26 0.471
Steepest Descent Local Search 62 0.001
Tabu Search 62 0.086
Branch and Bound Search 94 0.001
Simulated Annealing 50 0.486
Evolutionary Hill Climber 34 2.266
Constrained Local Search 26 0.793
L = 21 Restarts = 10
Algorithm E T(sec)
Brute Force Search 26 0.922
Steepest Descent Local Search 38 0.002
Tabu Search 38 0.111
Branch and Bound Search 142 0.001
Simulated Annealing 54 0.497
Evolutionary Hill Climber 34 1.661
Constrained Local Search 38 1.201
L = 21 Restarts = 50
Algorithm E T(sec)
Brute Force Search 26 1.068
Steepest Descent Local Search 38 0.007
Tabu Search 38 0.602
Branch and Bound Search 74 0.004
Simulated Annealing 54 2.613
Evolutionary Hill Climber 34 8.384
Constrained Local Search 38 5.933
L = 22 Restarts = 50
Algorithm E T(sec)
Brute Force Search 39 1.893
Steepest Descent Local Search 39 0.008
Tabu Search 39 0.807
Branch and Bound Search 79 0.004
Simulated Annealing 47 1.684
Evolutionary Hill Climber 47 9.518
Constrained Local Search 47 0.960
L = 23 Restarts = 50
Algorithm E T(sec)
Brute Force Search 47 3.949
Steepest Descent Local Search 79 0.009
Tabu Search 79 0.772
Branch and Bound Search 91 0.005
Simulated Annealing 59 1.393
Evolutionary Hill Climber 51 10.068
Constrained Local Search 67 0.120
L = 24 Restarts = 50
Algorithm E T(sec)
Brute Force Search 36 8.960
Steepest Descent Local Search 80 0.013
Tabu Search 80 1.010
Branch and Bound Search 124 0.005
Simulated Annealing 72 1.435
Evolutionary Hill Climber 56 10.739
Constrained Local Search 60 0.921
L = 25 Restarts = 50
Algorithm E T(sec)
Brute Force Search 36 18.505
Steepest Descent Local Search 104 0.012
Tabu Search 104 1.275
Branch and Bound Search 128 0.006
Simulated Annealing 68 1.491
Evolutionary Hill Climber 52 12.114
Constrained Local Search 88 0.144
The next step in this research is to use brute force to enumerate all the LABS for small values of the length of the sequences.
Blog Entry © Monday, September 8, 2025, by James Pate Williams, Jr., Comparison of Two Applications to Find the Minima of Classical Objective Functions
#pragma once
#include "pch.h"
class Functions
{
public:
// Ackley's function
static double lbx1[3];
static double ubx1[3];
static double fBest1;
static double xBest1[3];
static double f1(
int n, std::vector<double> z);
// Beale's function
static double lbx2[3];
static double ubx2[3];
static double fBest2;
static double xBest2[3];
static double f2(
int n, std::vector<double> z);
// Booth's function
static double lbx3[3];
static double ubx3[3];
static double fBest3;
static double xBest3[3];
static double f3(
int n, std::vector<double> z);
// Rosenbrock function
static double lbx4[3];
static double ubx4[3];
static double fBest4;
static double xBest4[3];
static double f4(
int n, std::vector<double> z);
// Holder table function
static double lbx5[3];
static double ubx5[3];
static double fBest5;
static double xBest5[3];
static double f5(
int n, std::vector<double> z);
// McCormick function
static double lbx6[3];
static double ubx6[3];
static double fBest6;
static double xBest6[3];
static double f6(
int n, std::vector<double> z);
static double rosenbrock(
int n, std::vector<double> x,
std::vector<double>& g);
static double mccormick(
int n, std::vector<double> z,
std::vector<double>& g);
};
#include "pch.h"
#include "Functions.h"
// Ackley's function
double Functions::lbx1[3] = { 0, -5, -5 };
double Functions::ubx1[3] = { 0, +5, +5 };
double Functions::fBest1 = 0.0;
double Functions::xBest1[3] = { 0, 0.0, 0.0 };
double Functions::f1(int n, std::vector<double> z)
{
double e = exp(1.0), pi = 4.0 * atan(1.0);
double x = z[1], y = z[2], pi2 = 2.0 * pi;
return -20 * exp(-0.2 * sqrt(0.5 * (x * x + y * y))) -
exp(0.5 * (cos(pi2 * x) + cos(pi2 * y))) + e + 20;
}
// Beale's function
double Functions::lbx2[3] = { 0, -4.5, -4.5 };
double Functions::ubx2[3] = { 0, +4.5, +4.5 };
double Functions::fBest2 = 0.0;
double Functions::xBest2[3] = { 0, 3.0, 2.5 };
double Functions::f2(int n, std::vector<double> z)
{
double x = z[1], y = z[2];
return pow(1.5 - x + x * y, 2) + pow(2.25 - x + x * y * y, 2) +
pow(2.625 - x + x * y * y * y, 2);
}
// Booth's function
double Functions::lbx3[3] = {0, -10, -10};
double Functions::ubx3[3] = {0, +10, +10};
double Functions::fBest3 = 0.0;
double Functions::xBest3[3] = {0, 1.0, 3.0};
double Functions::f3(int n, std::vector<double> z)
{
double x = z[1], y = z[2];
return pow(x + 2 * y - 7, 2) + pow(2 * x + y - 5, 2);
}
// Rosenbrock function
double Functions::lbx4[3] = {0, -100.0, -100.0};
double Functions::ubx4[3] = {0, +100.0, +100.0};
double Functions::fBest4 = 0.0;
double Functions::xBest4[3] = {0, 1.0, 1.0};
double Functions::f4(int n, std::vector<double> x)
{
double temp = x[2] - x[1] * x[1];
return temp * temp * 100.0 + (1.0 - x[1]) * (1.0 - x[1]);
}
// Holder table function
double Functions::lbx5[3] = {0, -10.0, -10.0};
double Functions::ubx5[3] = {0, +10.0, +10.0};
double Functions::fBest5 = -19.2085;
double Functions::xBest5[3] = {0, 8.05502, 9.66459};
double Functions::f5(int n, std::vector<double> z)
{
double pi = 4.0 * atan(1.0);
double x = z[1], y = z[2];
return -fabs(sin(x) * cos(y) *
exp(fabs(1.0 - sqrt(x * x + y * y) / pi)));
}
// McCormick function
double Functions::lbx6[3] = {0, -1.5, -3};
double Functions::ubx6[3] = {0, +4, +4};
double Functions::fBest6 = -1.9133;
double Functions::xBest6[3] = {0, -0.54719, -1.54719};
double Functions::f6(int n, std::vector<double> z)
{
double x = z[1], y = z[2];
return sin(x + y) + pow(x - y, 2) - 1.5 * x + 2.5 * y + 1;
}
double Functions::rosenbrock(
int n, std::vector<double> x,
std::vector<double>& g)
{
double temp;
temp = x[2] - x[1] * x[1];
g[1] = (-temp * 400.0 + 2.0) * x[1] - 2.0;
g[2] = temp * 200.0;
return temp * temp * 100.0 + (1.0 - x[1]) * (1.0 - x[1]);
}
double Functions::mccormick(
int n, std::vector<double> z,
std::vector<double>& g)
{
double x = z[1], y = z[2];
double c = cos(x + y);
double p = 2.0 * (x - y);
g[1] = c + p - 1.5;
g[2] = c - p + 2.5;
return sin(x + y) + pow(x - y, 2) - 1.5 * x + 2.5 * y + 1;
}
The PRAXIS and FLEMIN C source code can be found in the handbook “A Numerical Library in C for Scientists and Engineers” (c) 1996 by H. T. Lau, Ph.D. I translated the C code to C++ using Standard Template Library vectors.
Blog Entry © Tuesday, September 2, 2025, by James Pate Williams, Jr. Testing of a Backpropagation Neural Network Function Approximator
Blog Entry (c) Thursday, June 19, 2025, Factorizations of Some Composite Integers Using Two Different Computer Languages and Methods
Factorizations of the Seventh Fermat Number
and Other Composite Integers Using the
Pollard-Shor-Williams C# App and the LIP
Lenstra Elliptic Curve Method
It took 20.1 hours for J. M. Pollard to
factor the Seventh Fermat Number in
December 1988. He was using an 8-bit
Philips P2012 personal computer with
64k RAM and two 640k floppy drives.
His seven programs were written in the
Pascal computer language. The current
author was using a 64-bit Core i5 Dell
Latitude 3410 notebook computer with
8 GB RAM and a 235 GB solid state
hard drive. The computer language was
Windows 32 vanilla C in the Release x64
Configuration. The operating system was
Windows 11 Pro with the Visual Studio
2022 Community Version Integrated
Development Environment and C#.
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 1
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:20:31.359
Function Evaluations = 661379586
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 2
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:12:31.146
Function Evaluations = 283327140
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 3
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:21:53.637
Function Evaluations = 371472150
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 4
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:15:25.712
Function Evaluations = 197866620
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 5
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:03:06.030
Function Evaluations = 19501012
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 6
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:12:25.076
Function Evaluations = 198404541
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 7
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:20:59.172
Function Evaluations = 168943987
2^128+1
340282366920938463463374607431768211457 39
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 8
59649589127497217 p 17
5704689200685129054721 p 22
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:04:58.588
Function Evaluations = 13754504
Using Lenstra's Elliptic Curve Method
enter the number to be factored below:
2^128+1
340282366920938463463374607431768211457
number has 39 digits
== Menu ==
1 Cohen's Brent-Pollard Method
2 Cohen's Trial Division
3 Lenstra's Elliptic Curve Method
4 Pollard p-1 Method First Stage
5 Pollard p-1 Both Stages
6 Pollard-Shor-Williams Method
7 Exit Application
Enter an option '1' to '7':
3
factorization is complete
Runtime in seconds:
1.00000 sec.
original number has 39-decimal digits
'c' means composite and 'p' means prime
59649589127497217 17-decimal digits p
5704689200685129054721 22-decimal digits p
enter the number to be factored below:
Miscellaneous numbers using the C# app:
2^32+1
4294967297 10
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 1
641 p 3
6700417 p 7
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.034
Function Evaluations = 57
2^41-1
2199023255551 13
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 1
13367 p 5
164511353 p 9
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.003
Function Evaluations = 1128
2^67-1
147573952589676412927 21
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 1
193707721 p 9
761838257287 p 12
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.065
Function Evaluations = 30519
2^144-3
22300745198530623141535718272648361505980413 44
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 1
492729991333 p 12
45259565260477899162010980272761 p 32
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:04.804
Function Evaluations = 2458746
2^32+1
4294967297 10
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 5
641 p 3
6700417 p 7
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.001
Function Evaluations = 81
2^41-1
2199023255551 13
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 5
13367 p 5
164511353 p 9
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.002
Function Evaluations = 174
2^67-1
147573952589676412927 21
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 5
193707721 p 9
761838257287 p 12
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:00.050
Function Evaluations = 35949
2^144-3
22300745198530623141535718272648361505980413 44
Pseudo-Random Number Generator Seed = 1
Number of Tasks = 5
492729991333 p 12
45259565260477899162010980272761 p 32
Total Elapsed Runtime Hrs:Min:Sec.MS = 00:00:01.613
Function Evaluations = 632928
Now Lenstra's ECM:
enter the number to be factored below:
2^32+1
4294967297
number has 10 digits
== Menu ==
1 Cohen's Brent-Pollard Method
2 Cohen's Trial Division
3 Lenstra's Elliptic Curve Method
4 Pollard p-1 Method First Stage
5 Pollard p-1 Both Stages
6 Pollard-Shor-Williams Method
7 Exit Application
Enter an option '1' to '7':
3
factorization is complete
Runtime in seconds:
0.00000 sec.
original number has 10-decimal digits
'c' means composite and 'p' means prime
641 3-decimal digits p
6700417 7-decimal digits p
enter the number to be factored below:
2^41-1
2199023255551
number has 13 digits
== Menu ==
1 Cohen's Brent-Pollard Method
2 Cohen's Trial Division
3 Lenstra's Elliptic Curve Method
4 Pollard p-1 Method First Stage
5 Pollard p-1 Both Stages
6 Pollard-Shor-Williams Method
7 Exit Application
Enter an option '1' to '7':
3
factorization is complete
Runtime in seconds:
0.00000 sec.
original number has 13-decimal digits
'c' means composite and 'p' means prime
13367 5-decimal digits p
164511353 9-decimal digits p
enter the number to be factored below:
2^67-1
147573952589676412927
number has 21 digits
== Menu ==
1 Cohen's Brent-Pollard Method
2 Cohen's Trial Division
3 Lenstra's Elliptic Curve Method
4 Pollard p-1 Method First Stage
5 Pollard p-1 Both Stages
6 Pollard-Shor-Williams Method
7 Exit Application
Enter an option '1' to '7':
3
factorization is complete
Runtime in seconds:
0.00000 sec.
original number has 21-decimal digits
'c' means composite and 'p' means prime
193707721 9-decimal digits p
761838257287 12-decimal digits p
enter the number to be factored below:
2^144-3
22300745198530623141535718272648361505980413
number has 44 digits
== Menu ==
1 Cohen's Brent-Pollard Method
2 Cohen's Trial Division
3 Lenstra's Elliptic Curve Method
4 Pollard p-1 Method First Stage
5 Pollard p-1 Both Stages
6 Pollard-Shor-Williams Method
7 Exit Application
Enter an option '1' to '7':
3
factorization is complete
Runtime in seconds:
0.00000 sec.
original number has 44-decimal digits
'c' means composite and 'p' means prime
492729991333 12-decimal digits p
45259565260477899162010980272761 32-decimal digits p
enter the number to be factored below:
For the last number 2^144-3 it took J. M. Pollard's
factoring with cubic integers 47 hours in 1988.