Skip to content

Commit

Permalink
move main method to test scope
Browse files Browse the repository at this point in the history
  • Loading branch information
TilmanNeumann committed Jan 1, 2025
1 parent 676082e commit 85215cd
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 32 deletions.
32 changes: 0 additions & 32 deletions src/main/java/de/tilman_neumann/jml/roots/RootsReal.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@
import de.tilman_neumann.jml.powers.Pow;
import de.tilman_neumann.jml.precision.Magnitude;
import de.tilman_neumann.jml.precision.Scale;
import de.tilman_neumann.util.ConfigUtil;
import de.tilman_neumann.util.TimeUtil;

import static de.tilman_neumann.jml.base.BigDecimalConstants.F_0;

Expand Down Expand Up @@ -141,34 +139,4 @@ public static BigDecimal ithRoot(BigDecimal x, int i, BigDecimal guess, Scale re

throw new IllegalArgumentException("x = " + x + ", but i.th root(x) is defined for x>=0 only!");
}

/**
* Test.
* @param argv command line arguments
*/
public static void main(String[] argv) {
ConfigUtil.initProject();

if (argv.length != 2) {
// wrong number of arguments !
LOG.error("Usage: RootsReal <argument> <scale in decimal digits> !!");
return;
}

// get argument for the root function (decimal input required):
BigDecimal x = new BigDecimal(argv[0]);

// get desired maximal precision
Scale maxScale = Scale.valueOf(Integer.parseInt(argv[1]));
long t0, t1;

t0 = System.currentTimeMillis();
for (int i=2; i<10; i++) {
for (Scale scale=Scale.valueOf(2); scale.compareTo(maxScale)<=0; scale = scale.add(1)) {
LOG.debug(i + ".th root(" + x + ", " + scale + ")=" + ithRoot(x, i, scale));
}
}
t1 = System.currentTimeMillis();
LOG.debug("Time of root computations: " + TimeUtil.timeDiffStr(t0,t1));
}
}
66 changes: 66 additions & 0 deletions src/test/java/de/tilman_neumann/jml/roots/RootsRealRunner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* java-math-library is a Java library focused on number theory, but not necessarily limited to it. It is based on the PSIQS 4.0 factoring project.
* Copyright (C) 2018-2024 Tilman Neumann - tilman.neumann@web.de
*
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program;
* if not, see <http://www.gnu.org/licenses/>.
*/
package de.tilman_neumann.jml.roots;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

import de.tilman_neumann.jml.precision.Scale;
import de.tilman_neumann.util.ConfigUtil;
import de.tilman_neumann.util.TimeUtil;

/**
* Test i.th root of floating point numbers by user input.
*
* @author Tilman Neumann
*/
public class RootsRealRunner {
private static final Logger LOG = LogManager.getLogger(RootsRealRunner.class);

/**
* Test.
* @param argv command line arguments
*/
public static void main(String[] argv) {
ConfigUtil.initProject();

while (true) {
try {
LOG.info("\nPlease insert <x> <maximal scale>:");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = in.readLine();
String[] splitted = line.split("\\s+");
BigDecimal x = new BigDecimal(splitted[0]);
Integer maxScaleInput = Integer.parseInt(splitted[1]);
Scale maxScale = Scale.valueOf(maxScaleInput);
long t0, t1;

t0 = System.currentTimeMillis();
for (int i=2; i<10; i++) {
for (Scale scale = Scale.valueOf(2); scale.compareTo(maxScale)<=0; scale = scale.add(1)) {
LOG.debug(i + ".th root(" + x + ", " + scale + ")=" + RootsReal.ithRoot(x, i, scale));
}
}
t1 = System.currentTimeMillis();
LOG.debug("Time of root computations: " + TimeUtil.timeDiffStr(t0,t1));
} catch (Exception ex) {
LOG.error("Error " + ex, ex);
}
}
}
}

0 comments on commit 85215cd

Please sign in to comment.