/* * Copyright (C) 2008-2015 by Holger Arndt * * This file is part of the Universal Java Matrix Package (UJMP). * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * UJMP is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * UJMP 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with UJMP; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package org.ujmp.core.util.matrices; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.ujmp.core.Matrix; import org.ujmp.core.calculation.Calculation.Ret; import org.ujmp.core.stringmatrix.impl.DefaultDenseStringMatrix2D; public class MatrixLibraries extends DefaultDenseStringMatrix2D { private static final long serialVersionUID = -2575195318248762416L; public static final int VERSION = 0; public static final int DATE = 1; public static final int LICENSE = 2; public static final int JAVA14 = 3; public static final int JAVA5 = 4; public static final int JAVA6 = 5; public static final int JAVA7 = 6; public static final int JAVA8 = 7; public static final int DENSESA = 8; public static final int DENSEAA = 9; public static final int DENSEBLOCK = 10; public static final int SPARSEDOK = 11; public static final int SPARSELIL = 12; public static final int SPARSEYALE = 13; public static final int SPARSECRSCCS = 14; public static final int SPARSECDS = 15; public static final int DOUBLE = 16; public static final int FLOAT = 17; public static final int BIGDECIMAL = 18; public static final int STRINGS = 19; public static final int OBJECTS = 20; public static final int GENERICS = 21; public static final int COMPLEX = 22; public static final int D2 = 23; public static final int D3 = 24; public static final int D3PLUS = 25; public static final int MULTITHREADED = 26; public static final int INPLACE = 27; public static final int TRANSPOSE = 28; public static final int SCALE = 29; public static final int PLUSMINUS = 30; public static final int INV = 31; public static final int SOLVE = 32; public static final int LU = 33; public static final int QR = 34; public static final int SVD = 35; public static final int CHOL = 36; public static final int EIG = 37; public static final int CSVIO = 38; public static final int JDBCIO = 39; public static final int SERIALIZABLE = 40; public static final int VALUESPERDIMENSION = 41; public static final int MAXIMUMSIZE = 42; public static final int HOMEPAGE = 43; public enum MatrixLibrary { Colt, CommonsMath, EJML, JAMA, jblas, JlinAlg, JMathArray, JMatrices, Jsci, Jscience, la4j, Mantissa, MTJ, ojAlgo, ParallelColt, SST, UJMP, VecMath }; public static final int COLT = MatrixLibrary.Colt.ordinal(); public static final int COMMONSMATH = MatrixLibrary.CommonsMath.ordinal(); public static final int EJML = MatrixLibrary.EJML.ordinal();; public static final int JAMA = MatrixLibrary.JAMA.ordinal(); public static final int JBLAS = MatrixLibrary.jblas.ordinal(); public static final int JLINALG = MatrixLibrary.JlinAlg.ordinal(); public static final int JMATHARRAY = MatrixLibrary.JMathArray.ordinal(); public static final int JMATRICES = MatrixLibrary.JMatrices.ordinal(); public static final int JSCI = MatrixLibrary.Jsci.ordinal(); public static final int JSCIENCE = MatrixLibrary.Jscience.ordinal(); public static final int LA4J = MatrixLibrary.la4j.ordinal(); public static final int MANTISSA = MatrixLibrary.Mantissa.ordinal(); public static final int MTJ = MatrixLibrary.MTJ.ordinal(); public static final int OJALGO = MatrixLibrary.ojAlgo.ordinal(); public static final int PARALLELCOLT = MatrixLibrary.ParallelColt.ordinal(); public static final int SST = MatrixLibrary.SST.ordinal(); public static final int UJMP = MatrixLibrary.UJMP.ordinal(); public static final int VECMATH = MatrixLibrary.VecMath.ordinal(); public static final String NONSINGULARLETTER = "n"; public static final String NONSINGULARTEXT = "non-singular matrices only"; public static final String ERRORTEXT = "error in implementation"; public static final String SYMMETRICTEXT = "symmetric matrices only"; private List<String> footnotes = new ArrayList<String>(); public enum MatrixLibrariesFormat { DEFAULT, LATEX, HTMLTABLE, HTMLLIST }; private MatrixLibrariesFormat format = MatrixLibrariesFormat.DEFAULT; public MatrixLibraries() { this(MatrixLibrariesFormat.DEFAULT); } public MatrixLibraries(MatrixLibrariesFormat format) { super(44, 18); int footnoteId = 1; this.format = format; setColumnLabel(COLT, rotate("Colt")); setColumnLabel(COMMONSMATH, rotate("Commons Math")); setColumnLabel(EJML, rotate("EJML")); setColumnLabel(JAMA, rotate("JAMA")); setColumnLabel(JBLAS, rotate("jblas")); setColumnLabel(JLINALG, rotate("JLinAlg")); setColumnLabel(JMATHARRAY, rotate("JMathArray")); setColumnLabel(JMATRICES, rotate("JMatrices")); setColumnLabel(JSCI, rotate("JSci")); setColumnLabel(JSCIENCE, rotate("JScience")); setColumnLabel(LA4J, rotate("la4j")); setColumnLabel(MANTISSA, rotate("Mantissa")); setColumnLabel(MTJ, rotate("MTJ")); setColumnLabel(OJALGO, rotate("ojAlgo")); setColumnLabel(PARALLELCOLT, rotate("Parallel Colt")); setColumnLabel(SST, rotate("SST")); setColumnLabel(UJMP, rotate("UJMP")); setColumnLabel(VECMATH, rotate("vecmath")); setString(link(rotate("Colt Homepage"), "http://acs.lbl.gov/software/colt/"), HOMEPAGE, COLT); setString(link(rotate("Commons Math Homepage"), "http://commons.apache.org/math/"), HOMEPAGE, COMMONSMATH); setString( link(rotate("EJML Homepage"), "https://code.google.com/p/efficient-java-matrix-library/"), HOMEPAGE, EJML); setString(link(rotate("JAMA Homepage"), "http://math.nist.gov/javanumerics/jama/"), HOMEPAGE, JAMA); setString(link(rotate("jblas Homepage"), "http://mikiobraun.github.io/jblas/"), HOMEPAGE, JBLAS); setString(link(rotate("JLinAlg Homepage"), "http://jlinalg.sourceforge.net/"), HOMEPAGE, JLINALG); setString(link(rotate("JMathArray Homepage"), "https://code.google.com/p/jmatharray/"), HOMEPAGE, JMATHARRAY); setString(link(rotate("JMatrices Homepage"), "http://jmatrices.sourceforge.net/"), HOMEPAGE, JMATRICES); setString(link(rotate("JSci Homepage"), "http://jsci.sourceforge.net/"), HOMEPAGE, JSCI); setString(link(rotate("JScience Homepage"), "http://jscience.org/"), HOMEPAGE, JSCIENCE); setString(link(rotate("la4j Homepage"), "http://la4j.org/"), HOMEPAGE, LA4J); setString( link(rotate("Mantissa Homepage"), "http://www.spaceroots.org/software/mantissa/index.html"), HOMEPAGE, MANTISSA); setString(link(rotate("MTJ Homepage"), "https://github.com/fommil/matrix-toolkits-java/"), HOMEPAGE, MTJ); setString(link(rotate("ojAlgo Homepage"), "http://ojalgo.org/"), HOMEPAGE, OJALGO); setString( link(rotate("Parallel Colt Homepage"), "https://sites.google.com/site/piotrwendykier/software/parallelcolt"), HOMEPAGE, PARALLELCOLT); setString(link(rotate("SST Homepage"), "http://freecode.com/projects/shared"), HOMEPAGE, SST); setString(link(rotate("UJMP Homepage"), "http://ujmp.org/"), HOMEPAGE, UJMP); setString(link(rotate("vecmath Homepage"), "https://java.net/projects/vecmath"), HOMEPAGE, VECMATH); setRowLabel(VERSION, "Current Version"); setRowLabel(DATE, "Latest Release"); setRowLabel(LICENSE, "License"); setRowLabel(JAVA14, "Supports Java 1.4"); setRowLabel(JAVA5, "Supports Java 5"); setRowLabel(JAVA6, "Supports Java 6"); setRowLabel(JAVA7, "Supports Java 7"); setRowLabel(JAVA8, "Supports Java 8"); setRowLabel(MULTITHREADED, "Uses Multi-Threaded Operations"); setRowLabel(INPLACE, "Supports In-Place Operations"); setRowLabel(DENSESA, "Stores Dense Data in Single Array"); setRowLabel(DENSEAA, "Stores Dense Data in 2D Array"); setRowLabel(DENSEBLOCK, "Stores Dense Data in Block Storage"); setRowLabel( SPARSEDOK, "Stores Sparse Data in DOK" + footnote("" + footnoteId++, "dictionary of key-value pairs")); setRowLabel(SPARSELIL, "Stores Sparse Data in LIL" + footnote("" + footnoteId++, "list of lists")); setRowLabel( SPARSECRSCCS, "Stores Sparse Data in CRS/CCS" + footnote("" + footnoteId++, "compressed sparse row/column storare")); setRowLabel( SPARSECDS, "Stores Sparse Data in CDS" + footnote("" + footnoteId++, "compressed sparse diagonal")); setRowLabel(SPARSEYALE, "Stores Sparse Data in Yale Format"); setRowLabel(COMPLEX, "Can Store Complex Numbers"); setRowLabel(DOUBLE, "Can Store Double Values"); setRowLabel(FLOAT, "Can Store Float Values"); setRowLabel(BIGDECIMAL, "Can Store BigDecimal Values"); setRowLabel(STRINGS, "Can Store Strings"); setRowLabel(OBJECTS, "Can Store Objects"); setRowLabel(GENERICS, "Can Store Generic Objects"); setRowLabel(D2, "Supports 2D Matrix"); setRowLabel(D3, "Supports 3D Matrix"); setRowLabel(D3PLUS, "Supports >3D Matrix"); setRowLabel(TRANSPOSE, "Supports Matrix Transpose"); setRowLabel(SCALE, "Supports Matrix Multiply/Divide"); setRowLabel(PLUSMINUS, "Supports Plus/Minus"); setRowLabel(INV, "Supports Matrix Inverse"); setRowLabel(SOLVE, "Supports Solve Linear System"); setRowLabel(SVD, "Supports Singular Value Decomposition"); setRowLabel(LU, "Supports LU Decomposition"); setRowLabel(QR, "Supports QR Decomposition"); setRowLabel(CHOL, "Supports Cholesky Decomposition"); setRowLabel(EIG, "Supports Eigen Decomposition"); setRowLabel(CSVIO, "Can Import/Export CSV"); setRowLabel(JDBCIO, "Can Import/Export JDBC"); setRowLabel(SERIALIZABLE, "Matrix is Serializable"); setRowLabel(VALUESPERDIMENSION, "Number of Values per Dimension"); setRowLabel(MAXIMUMSIZE, "Maximum Matrix Size"); setRowLabel(HOMEPAGE, "Homepage"); setString(org.ujmp.core.UJMP.UJMPVERSION, VERSION, UJMP); setString(small("2014"), DATE, UJMP); setString(small("LGPL"), LICENSE, UJMP); setString(no(), JAVA14, UJMP); setString(yes(), JAVA5, UJMP); setString(yes(), JAVA6, UJMP); setString(yes(), JAVA7, UJMP); setString(yes(), JAVA8, UJMP); setString(yes(), MULTITHREADED, UJMP); setString(yes(), INPLACE, UJMP); setString(yes(), DENSEAA, UJMP); setString(yes(), DENSESA, UJMP); setString(yes(), DENSEBLOCK, UJMP); setString(yes(), SPARSEDOK, UJMP); setString(no(), SPARSEYALE, UJMP); setString(yes(), SPARSELIL, UJMP); setString(no(), SPARSECRSCCS, UJMP); setString(no(), SPARSECDS, UJMP); setString(yes(), DOUBLE, UJMP); setString(yes(), FLOAT, UJMP); setString(yes(), BIGDECIMAL, UJMP); setString(yes(), STRINGS, UJMP); setString(yes(), OBJECTS, UJMP); setString(yes(), GENERICS, UJMP); setString(no(), COMPLEX, UJMP); setString(yes(), D2, UJMP); setString(yes(), D3, UJMP); setString(yes(), D3PLUS, UJMP); setString(yes(), TRANSPOSE, UJMP); setString(yes(), SCALE, UJMP); setString(yes(), PLUSMINUS, UJMP); setString(yes(), INV, UJMP); setString(squareTall(), SOLVE, UJMP); setString(yes(), CHOL, UJMP); setString(yes(), EIG, UJMP); setString(all(), LU, UJMP); setString(squareTall(), QR, UJMP); setString(all(), SVD, UJMP); setString(yes(), CSVIO, UJMP); setString(yes(), JDBCIO, UJMP); setString(yes(), SERIALIZABLE, UJMP); setString(bit64(), VALUESPERDIMENSION, UJMP); setString(hdd(), MAXIMUMSIZE, UJMP); setString(small("1.2.0"), VERSION, COLT); setString(small("2004"), DATE, COLT); setString(small("BSD"), LICENSE, COLT); setString(yes(), JAVA14, COLT); setString(yes(), JAVA5, COLT); setString(yes(), JAVA6, COLT); setString(yes(), JAVA7, COLT); setString(yes(), JAVA8, COLT); setString(no(), MULTITHREADED, COLT); setString(yes(), INPLACE, COLT); setString(yes() + footnote("f", "flags matrix as transposed"), TRANSPOSE, COLT); setString(yes(), SCALE, COLT); setString(yes(), PLUSMINUS, COLT); setString(yes(), DENSESA, COLT); setString(no(), DENSEAA, COLT); setString(no(), DENSEBLOCK, COLT); setString(yes(), SPARSEDOK, COLT); setString(no(), SPARSEYALE, COLT); setString(no(), SPARSELIL, COLT); setString(no(), SPARSECRSCCS, COLT); setString(no(), SPARSECDS, COLT); setString(yes(), DOUBLE, COLT); setString(no(), FLOAT, COLT); setString(no(), BIGDECIMAL, COLT); setString(yes(), STRINGS, COLT); setString(yes(), OBJECTS, COLT); setString(no(), GENERICS, COLT); setString(no(), COMPLEX, COLT); setString(yes(), D2, COLT); setString(yes(), D3, COLT); setString(no(), D3PLUS, COLT); setString(yes(), INV, COLT); setString(squareTall(), SOLVE, COLT); setString(all(), SVD, COLT); setString(squareTall(), LU, COLT); setString(squareTall(), QR, COLT); setString(yes(), EIG, COLT); setString(yes(), CHOL, COLT); setString(no(), CSVIO, COLT); setString(no(), JDBCIO, COLT); setString(yes(), SERIALIZABLE, COLT); setString(no(), CSVIO, COLT); setString(no(), JDBCIO, COLT); setString(yes(), SERIALIZABLE, COLT); setString(bit32(), VALUESPERDIMENSION, COLT); setString(singleArray(), MAXIMUMSIZE, COLT); setString(small("3.2"), VERSION, COMMONSMATH); setString(small("2013"), DATE, COMMONSMATH); setString(small("Apache"), LICENSE, COMMONSMATH); setString(no(), JAVA14, COMMONSMATH); setString(yes(), JAVA5, COMMONSMATH); setString(yes(), JAVA6, COMMONSMATH); setString(yes(), JAVA7, COMMONSMATH); setString(yes(), JAVA8, COMMONSMATH); setString(no(), MULTITHREADED, COMMONSMATH); setString(yes(), INPLACE, COMMONSMATH); setString(yes(), TRANSPOSE, COMMONSMATH); setString(yes(), SCALE, COMMONSMATH); setString(yes(), PLUSMINUS, COMMONSMATH); setString(yes(), DENSEAA, COMMONSMATH); setString(no(), DENSESA, COMMONSMATH); setString(yes(), DENSEBLOCK, COMMONSMATH); setString(yes(), SPARSEDOK, COMMONSMATH); setString(no(), SPARSEYALE, COMMONSMATH); setString(no(), SPARSELIL, COMMONSMATH); setString(no(), SPARSECRSCCS, COMMONSMATH); setString(no(), SPARSECDS, COMMONSMATH); setString(yes(), DOUBLE, COMMONSMATH); setString(no(), FLOAT, COMMONSMATH); setString(yes(), BIGDECIMAL, COMMONSMATH); setString(yes(), STRINGS, COMMONSMATH); setString(yes(), OBJECTS, COMMONSMATH); setString(yes(), GENERICS, COMMONSMATH); setString(yes(), COMPLEX, COMMONSMATH); setString(yes(), D2, COMMONSMATH); setString(no(), D3, COMMONSMATH); setString(no(), D3PLUS, COMMONSMATH); setString(yes(), INV, COMMONSMATH); setString(squareTall(), SOLVE, COMMONSMATH); setString(all(), SVD, COMMONSMATH); setString(square() + footnote(NONSINGULARLETTER, NONSINGULARTEXT), LU, COMMONSMATH); setString(all(), QR, COMMONSMATH); setString(yes() + footnote("s", SYMMETRICTEXT), EIG, COMMONSMATH); setString(yes(), CHOL, COMMONSMATH); setString(no(), CSVIO, COMMONSMATH); setString(no(), JDBCIO, COMMONSMATH); setString(yes(), SERIALIZABLE, COMMONSMATH); setString(bit32(), VALUESPERDIMENSION, COMMONSMATH); setString(ram(), MAXIMUMSIZE, COMMONSMATH); setString(small("0.25"), VERSION, EJML); setString(small("2014"), DATE, EJML); setString(small("Apache"), LICENSE, EJML); setString(no(), JAVA14, EJML); setString(no(), JAVA5, EJML); setString(yes(), JAVA6, EJML); setString(yes(), JAVA7, EJML); setString(yes(), JAVA8, EJML); setString(no(), MULTITHREADED, EJML); setString(yes(), INPLACE, EJML); setString(yes(), DENSESA, EJML); setString(no(), DENSEAA, EJML); setString(yes(), DENSEBLOCK, EJML); setString(no(), SPARSEDOK, EJML); setString(no(), SPARSEYALE, EJML); setString(no(), SPARSELIL, EJML); setString(no(), SPARSECRSCCS, EJML); setString(no(), SPARSECDS, EJML); setString(yes(), DOUBLE, EJML); setString(no(), FLOAT, EJML); setString(no(), BIGDECIMAL, EJML); setString(no(), STRINGS, EJML); setString(no(), OBJECTS, EJML); setString(no(), GENERICS, EJML); setString(no(), COMPLEX, EJML); setString(yes(), D2, EJML); setString(no(), D3, EJML); setString(no(), D3PLUS, EJML); setString(yes(), TRANSPOSE, EJML); setString(yes(), SCALE, EJML); setString(yes(), PLUSMINUS, EJML); setString(yes(), INV, EJML); setString(squareTall(), SOLVE, EJML); setString(all(), SVD, EJML); setString(all(), LU, EJML); setString(square(), QR, EJML); setString(yes(), EIG, EJML); setString(yes() + footnote("e", ERRORTEXT), CHOL, EJML); setString(no(), CSVIO, EJML); setString(no(), JDBCIO, EJML); setString(yes(), SERIALIZABLE, EJML); setString(bit32(), VALUESPERDIMENSION, EJML); setString(singleArray(), MAXIMUMSIZE, EJML); setString(small("1.0.3"), VERSION, JAMA); setString(small("2012"), DATE, JAMA); setString(small("PD"), LICENSE, JAMA); setString(yes(), JAVA14, JAMA); setString(yes(), JAVA5, JAMA); setString(yes(), JAVA6, JAMA); setString(yes(), JAVA7, JAMA); setString(yes(), JAVA8, JAMA); setString(no(), MULTITHREADED, JAMA); setString(no(), INPLACE, JAMA); setString(yes(), DENSEAA, JAMA); setString(no(), DENSESA, JAMA); setString(no(), DENSEBLOCK, JAMA); setString(no(), SPARSEDOK, JAMA); setString(no(), SPARSEYALE, JAMA); setString(no(), SPARSELIL, JAMA); setString(no(), SPARSECRSCCS, JAMA); setString(no(), SPARSECDS, JAMA); setString(yes(), DOUBLE, JAMA); setString(no(), FLOAT, JAMA); setString(no(), BIGDECIMAL, JAMA); setString(no(), STRINGS, JAMA); setString(no(), OBJECTS, JAMA); setString(no(), GENERICS, JAMA); setString(no(), COMPLEX, JAMA); setString(yes(), D2, JAMA); setString(no(), D3, JAMA); setString(no(), D3PLUS, JAMA); setString(yes(), TRANSPOSE, JAMA); setString(yes(), SCALE, JAMA); setString(yes(), PLUSMINUS, JAMA); setString(yes(), INV, JAMA); setString(squareTall(), SOLVE, JAMA); setString(squareTall(), SVD, JAMA); setString(squareTall(), LU, JAMA); setString(squareTall(), QR, JAMA); setString(yes(), EIG, JAMA); setString(yes(), CHOL, JAMA); setString(no(), CSVIO, JAMA); setString(no(), JDBCIO, JAMA); setString(yes(), SERIALIZABLE, JAMA); setString(bit32(), VALUESPERDIMENSION, JAMA); setString(ram(), MAXIMUMSIZE, JAMA); setString(small("1.2.3"), VERSION, JBLAS); setString(small("2013"), DATE, JBLAS); setString(small("BSD"), LICENSE, JBLAS); setString(no(), JAVA14, JBLAS); setString(yes(), JAVA5, JBLAS); setString(yes(), JAVA6, JBLAS); setString(yes(), JAVA7, JBLAS); setString(yes(), JAVA8, JBLAS); setString(yes() + footnote("m", "using native machine code"), MULTITHREADED, JBLAS); setString(yes(), INPLACE, JBLAS); setString(yes(), DENSESA, JBLAS); setString(no(), DENSEAA, JBLAS); setString(no(), DENSEBLOCK, JBLAS); setString(no(), SPARSEDOK, JBLAS); setString(no(), SPARSEYALE, JBLAS); setString(no(), SPARSELIL, JBLAS); setString(no(), SPARSECRSCCS, JBLAS); setString(no(), SPARSECDS, JBLAS); setString(yes(), COMPLEX, JBLAS); setString(yes(), DOUBLE, JBLAS); setString(yes(), FLOAT, JBLAS); setString(no(), BIGDECIMAL, JBLAS); setString(no(), STRINGS, JBLAS); setString(no(), OBJECTS, JBLAS); setString(no(), GENERICS, JBLAS); setString(yes(), D2, JBLAS); setString(no(), D3, JBLAS); setString(no(), D3PLUS, JBLAS); setString(yes(), TRANSPOSE, JBLAS); setString(yes(), SCALE, JBLAS); setString(yes(), PLUSMINUS, JBLAS); setString(yes(), INV, JBLAS); setString(square(), SOLVE, JBLAS); setString(no(), SVD, JBLAS); setString(all(), LU, JBLAS); setString(no(), QR, JBLAS); setString(yes() + footnote("s", SYMMETRICTEXT), EIG, JBLAS); setString(yes(), CHOL, JBLAS); setString(no(), CSVIO, JBLAS); setString(no(), JDBCIO, JBLAS); setString(yes(), SERIALIZABLE, JBLAS); setString(bit32(), VALUESPERDIMENSION, JBLAS); setString(singleArray(), MAXIMUMSIZE, JBLAS); setString(small("0.6"), VERSION, JLINALG); setString(small("2009"), DATE, JLINALG); setString(small("GPL"), LICENSE, JLINALG); setString(no(), JAVA14, JLINALG); setString(no(), JAVA5, JLINALG); setString(yes(), JAVA6, JLINALG); setString(yes(), JAVA7, JLINALG); setString(yes(), JAVA8, JLINALG); setString(no(), MULTITHREADED, JLINALG); setString(yes(), INPLACE, JLINALG); setString(yes(), DENSEAA, JLINALG); setString(no(), DENSESA, JLINALG); setString(no(), DENSEBLOCK, JLINALG); setString(no(), SPARSEDOK, JLINALG); setString(no(), SPARSEYALE, JLINALG); setString(no(), SPARSELIL, JLINALG); setString(no(), SPARSECRSCCS, JLINALG); setString(no(), SPARSECDS, JLINALG); setString(yes(), COMPLEX, JLINALG); setString(yes(), DOUBLE, JLINALG); setString(no(), FLOAT, JLINALG); setString(yes(), BIGDECIMAL, JLINALG); setString(yes(), STRINGS, JLINALG); setString(yes(), OBJECTS, JLINALG); setString(yes(), GENERICS, JLINALG); setString(yes(), TRANSPOSE, JLINALG); setString(yes(), SCALE, JLINALG); setString(yes(), PLUSMINUS, JLINALG); setString(yes(), D2, JLINALG); setString(no(), D3, JLINALG); setString(no(), D3PLUS, JLINALG); setString(yes(), INV, JLINALG); setString(no() + footnote("v", "only for $A \\cdot X = \\mbox{vector}$"), SOLVE, JLINALG); setString(no(), SVD, JLINALG); setString(no(), LU, JLINALG); setString(no(), QR, JLINALG); setString(no(), EIG, JLINALG); setString(no(), CHOL, JLINALG); setString(no(), CSVIO, JLINALG); setString(no(), JDBCIO, JLINALG); setString(yes(), SERIALIZABLE, JLINALG); setString(bit32(), VALUESPERDIMENSION, JLINALG); setString(ram(), MAXIMUMSIZE, JLINALG); setString("", VERSION, JMATHARRAY); setString(small("2008"), DATE, JMATHARRAY); setString(small("BSD"), LICENSE, JMATHARRAY); setString(no(), JAVA14, JMATHARRAY); setString(yes(), JAVA5, JMATHARRAY); setString(yes(), JAVA6, JMATHARRAY); setString(yes(), JAVA7, JMATHARRAY); setString(yes(), JAVA8, JMATHARRAY); setString(no(), MULTITHREADED, JMATHARRAY); setString(no(), INPLACE, JMATHARRAY); setString(yes(), TRANSPOSE, JMATHARRAY); setString(yes(), SCALE, JMATHARRAY); setString(yes(), PLUSMINUS, JMATHARRAY); setString(yes(), DENSEAA, JMATHARRAY); setString(no(), DENSESA, JMATHARRAY); setString(no(), DENSEBLOCK, JMATHARRAY); setString(no(), SPARSEDOK, JMATHARRAY); setString(no(), SPARSEYALE, JMATHARRAY); setString(no(), SPARSELIL, JMATHARRAY); setString(no(), SPARSECRSCCS, JMATHARRAY); setString(no(), SPARSECDS, JMATHARRAY); setString(no(), COMPLEX, JMATHARRAY); setString(yes(), DOUBLE, JMATHARRAY); setString(no(), FLOAT, JMATHARRAY); setString(no(), BIGDECIMAL, JMATHARRAY); setString(no(), STRINGS, JMATHARRAY); setString(no(), OBJECTS, JMATHARRAY); setString(no(), GENERICS, JMATHARRAY); setString(yes(), D2, JMATHARRAY); setString(no(), D3, JMATHARRAY); setString(no(), D3PLUS, JMATHARRAY); setString(yes(), INV, JMATHARRAY); setString(squareTall(), SOLVE, JMATHARRAY); setString(squareTall(), SVD, JMATHARRAY); setString(squareTall(), LU, JMATHARRAY); setString(squareTall(), QR, JMATHARRAY); setString(yes(), EIG, JMATHARRAY); setString(yes(), CHOL, JMATHARRAY); setString(no(), CSVIO, JMATHARRAY); setString(no(), JDBCIO, JMATHARRAY); setString(yes(), SERIALIZABLE, JMATHARRAY); setString(bit32(), VALUESPERDIMENSION, JMATHARRAY); setString(ram(), MAXIMUMSIZE, JMATHARRAY); setString(small("0.6"), VERSION, JMATRICES); setString(small("2004"), DATE, JMATRICES); setString(small("LGPL"), LICENSE, JMATRICES); setString(yes(), JAVA14, JMATRICES); setString(yes(), JAVA5, JMATRICES); setString(yes(), JAVA6, JMATRICES); setString(yes(), JAVA7, JMATRICES); setString(yes(), JAVA8, JMATRICES); setString(no(), MULTITHREADED, JMATRICES); setString(no(), INPLACE, JMATRICES); setString(yes(), DENSEAA, JMATRICES); setString(no(), DENSESA, JMATRICES); setString(no(), DENSEBLOCK, JMATRICES); setString(no(), SPARSEDOK, JMATRICES); setString(no(), SPARSEYALE, JMATRICES); setString(no(), SPARSELIL, JMATRICES); setString(no(), SPARSECRSCCS, JMATRICES); setString(no(), SPARSECDS, JMATRICES); setString(yes(), COMPLEX, JMATRICES); setString(yes(), DOUBLE, JMATRICES); setString(no(), FLOAT, JMATRICES); setString(yes(), BIGDECIMAL, JMATRICES); setString(no(), STRINGS, JMATRICES); setString(no(), OBJECTS, JMATRICES); setString(no(), GENERICS, JMATRICES); setString(yes(), D2, JMATRICES); setString(no(), D3, JMATRICES); setString(no(), D3PLUS, JMATRICES); setString(yes(), TRANSPOSE, JMATRICES); setString(yes(), PLUSMINUS, JMATRICES); setString(yes(), SCALE, JMATRICES); setString(yes(), INV, JMATRICES); setString(squareTall(), SOLVE, JMATRICES); setString(square(), SVD, JMATRICES); setString(squareTall(), LU, JMATRICES); setString(squareTall(), QR, JMATRICES); setString(yes(), EIG, JMATRICES); setString(yes(), CHOL, JMATRICES); setString(no(), CSVIO, JMATRICES); setString(no(), JDBCIO, JMATRICES); setString(yes(), SERIALIZABLE, JMATRICES); setString(bit32(), VALUESPERDIMENSION, JMATRICES); setString(ram(), MAXIMUMSIZE, JMATRICES); setString(small("1.5.2"), VERSION, JSCI); setString(small("2009"), DATE, JSCI); setString(small("LGPL"), LICENSE, JSCI); setString(yes(), JAVA14, JSCI); setString(yes(), JAVA5, JSCI); setString(yes(), JAVA6, JSCI); setString(yes(), JAVA7, JSCI); setString(yes(), JAVA8, JSCI); setString(no(), MULTITHREADED, JSCI); setString(no(), INPLACE, JSCI); setString(yes(), DENSEAA, JSCI); setString(no(), DENSESA, JSCI); setString(no(), DENSEBLOCK, JSCI); setString(yes(), SPARSEYALE, JSCI); setString(no(), SPARSEDOK, JSCI); setString(no(), SPARSELIL, JSCI); setString(no(), SPARSECRSCCS, JSCI); setString(no(), SPARSECDS, JSCI); setString(yes(), COMPLEX, JSCI); setString(yes(), DOUBLE, JSCI); setString(no(), FLOAT, JSCI); setString(no(), BIGDECIMAL, JSCI); setString(no(), STRINGS, JSCI); setString(no(), OBJECTS, JSCI); setString(no(), GENERICS, JSCI); setString(yes(), D2, JSCI); setString(no(), D3, JSCI); setString(no(), D3PLUS, JSCI); setString(yes(), TRANSPOSE, JSCI); setString(yes(), PLUSMINUS, JSCI); setString(yes(), SCALE, JSCI); setString(no() + footnote("v", "only for $A \\cdot X = \\mbox{vector}$"), SOLVE, JSCI); setString(yes(), INV, JSCI); setString(square() + footnote(NONSINGULARLETTER, NONSINGULARTEXT), SVD, JSCI); setString(square() + footnote(NONSINGULARLETTER, NONSINGULARTEXT), LU, JSCI); setString(square(), QR, JSCI); setString( yes() + footnote("s", SYMMETRICTEXT) + footnote("a", "results not directly accessible"), EIG, JSCI); setString(yes(), CHOL, JSCI); setString(no(), CSVIO, JSCI); setString(no(), JDBCIO, JSCI); setString(yes(), SERIALIZABLE, JSCI); setString(bit32(), VALUESPERDIMENSION, JSCI); setString(ram(), MAXIMUMSIZE, JSCI); setString(small("4.3.1"), VERSION, JSCIENCE); setString(small("2007"), DATE, JSCIENCE); setString(small("BSD"), LICENSE, JSCIENCE); setString(no(), JAVA14, JSCIENCE); setString(yes(), JAVA5, JSCIENCE); setString(yes(), JAVA6, JSCIENCE); setString(yes(), JAVA7, JSCIENCE); setString(yes(), JAVA8, JSCIENCE); setString(yes(), MULTITHREADED, JSCIENCE); setString(no(), INPLACE, JSCIENCE); setString(yes(), DENSEAA, JSCIENCE); setString(no(), DENSEBLOCK, JSCIENCE); setString(no(), DENSESA, JSCIENCE); setString(yes(), SPARSELIL, JSCIENCE); setString(no(), SPARSEYALE, JSCIENCE); setString(no(), SPARSECDS, JSCIENCE); setString(no(), SPARSECRSCCS, JSCIENCE); setString(yes(), SPARSEDOK, JSCIENCE); setString(yes(), COMPLEX, JSCIENCE); setString(yes(), DOUBLE, JSCIENCE); setString(no(), FLOAT, JSCIENCE); setString(no(), BIGDECIMAL, JSCIENCE); setString(yes(), STRINGS, JSCIENCE); setString(yes(), OBJECTS, JSCIENCE); setString(yes(), GENERICS, JSCIENCE); setString(yes(), D2, JSCIENCE); setString(no(), D3, JSCIENCE); setString(no(), D3PLUS, JSCIENCE); setString(yes() + footnote("f", "flags matrix as transposed"), TRANSPOSE, JSCIENCE); setString(yes(), SCALE, JSCIENCE); setString(yes(), PLUSMINUS, JSCIENCE); setString(yes(), INV, JSCIENCE); setString(square(), SOLVE, JSCIENCE); setString(no(), SVD, JSCIENCE); setString(square() + footnote(NONSINGULARLETTER, NONSINGULARTEXT), LU, JSCIENCE); setString(no(), QR, JSCIENCE); setString(no(), EIG, JSCIENCE); setString(no(), CHOL, JSCIENCE); setString(no(), CSVIO, JSCIENCE); setString(no(), JDBCIO, JSCIENCE); setString(no(), SERIALIZABLE, JSCIENCE); setString(bit32(), VALUESPERDIMENSION, JSCIENCE); setString(ram(), MAXIMUMSIZE, JSCIENCE); setString(small("0.4.9"), VERSION, LA4J); setString(small("2014"), DATE, LA4J); setString(small("Apache"), LICENSE, LA4J); setString(no(), JAVA14, LA4J); setString(yes(), JAVA5, LA4J); setString(yes(), JAVA6, LA4J); setString(yes(), JAVA7, LA4J); setString(yes(), JAVA8, LA4J); setString(no(), MULTITHREADED, LA4J); setString(yes(), INPLACE, LA4J); setString(yes(), TRANSPOSE, LA4J); setString(yes(), PLUSMINUS, LA4J); setString(yes(), SCALE, LA4J); setString(no(), DENSESA, LA4J); setString(yes(), DENSEAA, LA4J); setString(no(), DENSEBLOCK, LA4J); setString(no(), SPARSEDOK, LA4J); setString(no(), SPARSEYALE, LA4J); setString(no(), SPARSELIL, LA4J); setString(yes(), SPARSECRSCCS, LA4J); setString(no(), SPARSECDS, LA4J); setString(no(), COMPLEX, LA4J); setString(yes(), DOUBLE, LA4J); setString(no(), FLOAT, LA4J); setString(no(), BIGDECIMAL, LA4J); setString(no(), STRINGS, LA4J); setString(no(), OBJECTS, LA4J); setString(no(), GENERICS, LA4J); setString(yes(), D2, LA4J); setString(no(), D3, LA4J); setString(no(), D3PLUS, LA4J); setString(yes(), INV, LA4J); setString(squareTall(), SOLVE, LA4J); setString(squareTall(), SVD, LA4J); setString(square(), LU, LA4J); setString(squareTall(), QR, LA4J); setString(yes(), EIG, LA4J); setString(yes(), CHOL, LA4J); setString(no(), CSVIO, LA4J); setString(no(), JDBCIO, LA4J); setString(yes(), SERIALIZABLE, LA4J); setString(bit32(), VALUESPERDIMENSION, LA4J); setString(ram(), MAXIMUMSIZE, LA4J); setString(small("7.2"), VERSION, MANTISSA); setString(small("2007"), DATE, MANTISSA); setString(small("BSD"), LICENSE, MANTISSA); setString(yes(), JAVA14, MANTISSA); setString(yes(), JAVA5, MANTISSA); setString(yes(), JAVA6, MANTISSA); setString(yes(), JAVA7, MANTISSA); setString(yes(), JAVA8, MANTISSA); setString(no(), MULTITHREADED, MANTISSA); setString(yes(), INPLACE, MANTISSA); setString(yes(), TRANSPOSE, MANTISSA); setString(yes(), PLUSMINUS, MANTISSA); setString(yes(), SCALE, MANTISSA); setString(yes(), DENSESA, MANTISSA); setString(no(), DENSEAA, MANTISSA); setString(no(), DENSEBLOCK, MANTISSA); setString(no(), SPARSEDOK, MANTISSA); setString(no(), SPARSEYALE, MANTISSA); setString(no(), SPARSELIL, MANTISSA); setString(no(), SPARSECRSCCS, MANTISSA); setString(no(), SPARSECDS, MANTISSA); setString(no(), COMPLEX, MANTISSA); setString(yes(), DOUBLE, MANTISSA); setString(no(), FLOAT, MANTISSA); setString(no(), BIGDECIMAL, MANTISSA); setString(no(), STRINGS, MANTISSA); setString(no(), OBJECTS, MANTISSA); setString(no(), GENERICS, MANTISSA); setString(yes(), D2, MANTISSA); setString(no(), D3, MANTISSA); setString(no(), D3PLUS, MANTISSA); setString(yes(), INV, MANTISSA); setString(square(), SOLVE, MANTISSA); setString(no(), SVD, MANTISSA); setString(square() + footnote("a", "results not directly accessible"), LU, MANTISSA); setString(no(), QR, MANTISSA); setString(no(), EIG, MANTISSA); setString(no(), CHOL, MANTISSA); setString(no(), CSVIO, MANTISSA); setString(no(), JDBCIO, MANTISSA); setString(yes(), SERIALIZABLE, MANTISSA); setString(bit32(), VALUESPERDIMENSION, MANTISSA); setString(singleArray(), MAXIMUMSIZE, MANTISSA); setString(small("1.0.1"), VERSION, MTJ); setString(small("2013"), DATE, MTJ); setString(small("LGPL"), LICENSE, MTJ); setString(no(), JAVA14, MTJ); setString(yes(), JAVA5, MTJ); setString(yes(), JAVA6, MTJ); setString(yes(), JAVA7, MTJ); setString(yes(), JAVA8, MTJ); setString(yes() + footnote("m", "using native machine code"), MULTITHREADED, MTJ); setString(yes(), INPLACE, MTJ); setString(yes(), DENSESA, MTJ); setString(no(), DENSEAA, MTJ); setString(no(), DENSEBLOCK, MTJ); setString(yes(), SPARSECRSCCS, MTJ); setString(yes(), SPARSECDS, MTJ); setString(yes(), SPARSELIL, MTJ); setString(no(), SPARSEDOK, MTJ); setString(no(), SPARSEYALE, MTJ); setString(no(), COMPLEX, MTJ); setString(yes(), DOUBLE, MTJ); setString(no(), FLOAT, MTJ); setString(no(), BIGDECIMAL, MTJ); setString(no(), STRINGS, MTJ); setString(no(), OBJECTS, MTJ); setString(no(), GENERICS, MTJ); setString(yes(), D2, MTJ); setString(no(), D3, MTJ); setString(no(), D3PLUS, MTJ); setString(yes(), TRANSPOSE, MTJ); setString(yes(), SCALE, MTJ); setString(yes(), PLUSMINUS, MTJ); setString(yes(), INV, MTJ); setString(squareTall(), SOLVE, MTJ); setString(all(), SVD, MTJ); setString(all() + footnote("e", ERRORTEXT), LU, MTJ); setString(squareTall(), QR, MTJ); setString(yes() + footnote("s", SYMMETRICTEXT), EIG, MTJ); setString(yes() + footnote("e", ERRORTEXT), CHOL, MTJ); setString(no(), CSVIO, MTJ); setString(no(), JDBCIO, MTJ); setString(yes(), SERIALIZABLE, MTJ); setString(bit32(), VALUESPERDIMENSION, MTJ); setString(singleArray(), MAXIMUMSIZE, MTJ); setString(small("35.0"), VERSION, OJALGO); setString(small("2013"), DATE, OJALGO); setString(small("MIT"), LICENSE, OJALGO); setString(no(), JAVA14, OJALGO); setString(yes(), JAVA5, OJALGO); setString(yes(), JAVA6, OJALGO); setString(yes(), JAVA7, OJALGO); setString(yes(), JAVA8, OJALGO); setString(yes(), MULTITHREADED, OJALGO); setString(yes(), INPLACE, OJALGO); setString(yes() + footnote("f", "flags matrix as transposed"), TRANSPOSE, OJALGO); setString(yes(), SCALE, OJALGO); setString(yes(), PLUSMINUS, OJALGO); setString(yes(), DENSESA, OJALGO); setString(no(), DENSEAA, OJALGO); setString(no(), DENSEBLOCK, OJALGO); setString(no(), SPARSECDS, OJALGO); setString(no(), SPARSECRSCCS, OJALGO); setString(no(), SPARSEYALE, OJALGO); setString(no(), SPARSELIL, OJALGO); setString(no(), SPARSEDOK, OJALGO); setString(yes(), COMPLEX, OJALGO); setString(yes(), DOUBLE, OJALGO); setString(yes(), FLOAT, OJALGO); setString(yes(), BIGDECIMAL, OJALGO); setString(no(), STRINGS, OJALGO); setString(no(), OBJECTS, OJALGO); setString(no(), GENERICS, OJALGO); setString(yes(), D2, OJALGO); setString(no(), D3, OJALGO); setString(no(), D3PLUS, OJALGO); setString(yes(), INV, OJALGO); setString(squareTall(), SOLVE, OJALGO); setString(all(), SVD, OJALGO); setString(all(), LU, OJALGO); setString(all(), QR, OJALGO); setString(yes(), EIG, OJALGO); setString(yes(), CHOL, OJALGO); setString(no(), CSVIO, OJALGO); setString(no(), JDBCIO, OJALGO); setString(yes(), SERIALIZABLE, OJALGO); setString(bit32(), VALUESPERDIMENSION, OJALGO); setString(singleArray(), MAXIMUMSIZE, OJALGO); setString(small("0.10.1"), VERSION, PARALLELCOLT); setString(small("2013"), DATE, PARALLELCOLT); setString(small("BSD"), LICENSE, PARALLELCOLT); setString(yes(), JAVA14, PARALLELCOLT); setString(yes(), JAVA5, PARALLELCOLT); setString(yes(), JAVA6, PARALLELCOLT); setString(yes(), JAVA7, PARALLELCOLT); setString(yes(), JAVA8, PARALLELCOLT); setString(yes(), MULTITHREADED, PARALLELCOLT); setString(yes(), INPLACE, PARALLELCOLT); setString(yes() + footnote("f", "flags matrix as transposed"), TRANSPOSE, PARALLELCOLT); setString(yes(), SCALE, PARALLELCOLT); setString(yes(), PLUSMINUS, PARALLELCOLT); setString(yes(), DENSESA, PARALLELCOLT); setString(yes(), DENSEAA, PARALLELCOLT); setString(no(), DENSEBLOCK, PARALLELCOLT); setString(yes(), SPARSECRSCCS, PARALLELCOLT); setString(yes(), SPARSELIL, PARALLELCOLT); setString(yes(), SPARSEDOK, PARALLELCOLT); setString(no(), SPARSEYALE, PARALLELCOLT); setString(no(), SPARSECDS, PARALLELCOLT); setString(yes(), COMPLEX, PARALLELCOLT); setString(yes(), DOUBLE, PARALLELCOLT); setString(yes(), FLOAT, PARALLELCOLT); setString(no(), BIGDECIMAL, PARALLELCOLT); setString(yes(), STRINGS, PARALLELCOLT); setString(yes(), OBJECTS, PARALLELCOLT); setString(no(), GENERICS, PARALLELCOLT); setString(yes(), D2, PARALLELCOLT); setString(yes(), D3, PARALLELCOLT); setString(no(), D3PLUS, PARALLELCOLT); setString(yes(), INV, PARALLELCOLT); setString(squareTall(), SOLVE, PARALLELCOLT); setString(all(), SVD, PARALLELCOLT); setString(squareTall(), LU, PARALLELCOLT); setString(squareTall(), QR, PARALLELCOLT); setString(yes(), EIG, PARALLELCOLT); setString(yes(), CHOL, PARALLELCOLT); setString(no(), CSVIO, PARALLELCOLT); setString(no(), JDBCIO, PARALLELCOLT); setString(yes(), SERIALIZABLE, PARALLELCOLT); setString(bit32(), VALUESPERDIMENSION, PARALLELCOLT); setString(ram(), MAXIMUMSIZE, PARALLELCOLT); setString(small("1.11"), VERSION, SST); setString(small("2010"), DATE, SST); setString(small("LGPL"), LICENSE, SST); setString(no(), JAVA14, SST); setString(yes() + footnote("j", "jar does not work with Java 5"), JAVA5, SST); setString(yes(), JAVA6, SST); setString(yes(), JAVA7, SST); setString(yes(), JAVA8, SST); setString(no(), MULTITHREADED, SST); setString(yes(), INPLACE, SST); setString(yes(), TRANSPOSE, SST); setString(yes(), SCALE, SST); setString(yes(), PLUSMINUS, SST); setString(yes(), DENSESA, SST); setString(no(), DENSEAA, SST); setString(no(), DENSEBLOCK, SST); setString(yes(), SPARSEDOK, SST); setString(no(), SPARSELIL, SST); setString(no(), SPARSEYALE, SST); setString(no(), SPARSECDS, SST); setString(no(), SPARSECRSCCS, SST); setString(yes(), COMPLEX, SST); setString(yes(), DOUBLE, SST); setString(no(), FLOAT, SST); setString(no(), BIGDECIMAL, SST); setString(yes(), STRINGS, SST); setString(yes(), OBJECTS, SST); setString(yes(), GENERICS, SST); setString(yes(), D2, SST); setString(yes(), D3, SST); setString(yes(), D3PLUS, SST); setString(yes(), INV, SST); setString(no(), SOLVE, SST); setString(all(), SVD, SST); setString(no(), LU, SST); setString(no(), QR, SST); setString(yes(), EIG, SST); setString(no(), CHOL, SST); setString(no(), CSVIO, SST); setString(no(), JDBCIO, SST); setString(no(), SERIALIZABLE, SST); setString(bit32(), VALUESPERDIMENSION, SST); setString(singleArray(), MAXIMUMSIZE, SST); setString(small("1.5.2"), VERSION, VECMATH); setString("2001?", DATE, VECMATH); setString(small("other"), LICENSE, VECMATH); setString(no(), JAVA14, VECMATH); setString(yes(), JAVA5, VECMATH); setString(yes(), JAVA6, VECMATH); setString(yes(), JAVA7, VECMATH); setString(yes(), JAVA8, VECMATH); setString(no(), MULTITHREADED, VECMATH); setString(yes(), INPLACE, VECMATH); setString(yes(), TRANSPOSE, VECMATH); setString(no(), SCALE, VECMATH); setString(yes(), PLUSMINUS, VECMATH); setString(yes(), DENSEAA, VECMATH); setString(no(), DENSESA, VECMATH); setString(no(), DENSEBLOCK, VECMATH); setString(no(), SPARSEDOK, VECMATH); setString(no(), SPARSELIL, VECMATH); setString(no(), SPARSECDS, VECMATH); setString(no(), SPARSECRSCCS, VECMATH); setString(no(), SPARSEYALE, VECMATH); setString(no(), COMPLEX, VECMATH); setString(yes(), DOUBLE, VECMATH); setString(no(), FLOAT, VECMATH); setString(no(), BIGDECIMAL, VECMATH); setString(no(), STRINGS, VECMATH); setString(no(), OBJECTS, VECMATH); setString(no(), GENERICS, VECMATH); setString(yes(), D2, VECMATH); setString(no(), D3, VECMATH); setString(no(), D3PLUS, VECMATH); setString(yes(), INV, VECMATH); setString(no(), SOLVE, VECMATH); setString(no() + footnote("e", ERRORTEXT), SVD, VECMATH); setString(square() + footnote(NONSINGULARLETTER, NONSINGULARTEXT), LU, VECMATH); setString(no(), QR, VECMATH); setString(no(), EIG, VECMATH); setString(no(), CHOL, VECMATH); setString(no(), CSVIO, VECMATH); setString(no(), JDBCIO, VECMATH); setString(yes(), SERIALIZABLE, VECMATH); setString(bit32(), VALUESPERDIMENSION, VECMATH); setString(ram(), MAXIMUMSIZE, VECMATH); } public String yes() { switch (format) { case LATEX: return "\\bf{$+$}"; case HTMLTABLE: return "<span class=\"text-success fa fa-check-square\"></span>"; case HTMLLIST: return "yes"; default: return "yes"; } } public String hdd() { switch (format) { case LATEX: return "~4TB (Disk)"; case HTMLTABLE: return "~4TB (Disk)"; case HTMLLIST: return "~4TB (Disk)"; default: return "~4TB (Disk)"; } } public String ram() { switch (format) { case LATEX: return "~64GB (RAM)"; case HTMLTABLE: return "~64GB (RAM)"; case HTMLLIST: return "~64GB (RAM)"; default: return "~64GB (RAM)"; } } public String singleArray() { switch (format) { case LATEX: return "16GB (Single Array)"; case HTMLTABLE: return "16GB (Single Array)"; case HTMLLIST: return "16GB (Single Array)"; default: return "16GB (Single Array)"; } } public String bit64() { switch (format) { case LATEX: return "2^{63}-1"; case HTMLTABLE: return "2<sup>63</sup>-1"; case HTMLLIST: return "2<sup>63</sup>-1"; default: return "2^63-1"; } } public String bit32() { switch (format) { case LATEX: return "2^{31}-1"; case HTMLTABLE: return "2<sup>31</sup>-1"; case HTMLLIST: return "2<sup>31</sup>-1"; default: return "2^31-1"; } } public String all() { switch (format) { case LATEX: return "\\scalebox{0.6}[1.0]{$\\square$}\\,$\\square$\\,\\scalebox{1.0}[0.6]{$\\square$}"; case HTMLTABLE: return "<span class=\"fa fa-arrows-v\"></span> <span class=\"fa fa-arrows\"></span> <span class=\"fa fa-arrows-h\"></span>"; default: return "all"; } } public String squareTall() { switch (format) { case LATEX: return "\\scalebox{0.6}[1.0]{$\\square$}\\,$\\square$"; case HTMLTABLE: return "<span class=\"fa fa-arrows-v\"></span> <span class=\"fa fa-arrows\"></span>"; default: return "square, tall"; } } public String square() { switch (format) { case LATEX: return "$\\square$"; case HTMLTABLE: return "<span class=\"fa fa-arrows\"></span>"; default: return "square"; } } public String tall() { switch (format) { case LATEX: return "$\\tall$"; case HTMLTABLE: return "<span class=\"fa fa-arrows-v\"></span>"; default: return "tall"; } } public String fat() { switch (format) { case LATEX: return "$\\fat$"; case HTMLTABLE: return "<span class=\"fa fa-arrows-h\"></span>"; default: return "fat"; } } public String circle() { switch (format) { case LATEX: return "$\\circ$"; default: return "square"; } } public String no() { switch (format) { case LATEX: return "\\bf{$-$}"; case HTMLTABLE: return "<span class=\"text-danger fa fa-minus-square\"></span>"; case HTMLLIST: return "no"; default: return "no"; } } public String link(String label, String link) { switch (format) { case HTMLTABLE: return "<a href=\"" + link + "\">" + label + "</a>"; case HTMLLIST: return "<a href=\"" + link + "\">" + label + "</a>"; default: return label; } } public String rotate(String text) { switch (format) { case LATEX: return "\\begin{turn}{90}" + text + "\\end{turn}"; default: return text; } } public String small(String text) { switch (format) { case LATEX: return "\\small " + text; case HTMLLIST: return text; case HTMLTABLE: return "<small>" + text + "</small>"; default: return text; } } public String footnote(String footnote, String text) { switch (format) { case LATEX: String f = "\\footnotesize{$^\\mathrm{" + footnote + "}$ " + text + "}"; if (!footnotes.contains(f)) { footnotes.add(f); } return "$^{\\mathrm{" + footnote + "}}$"; case HTMLTABLE: return ""; default: f = footnote + " " + text; if (!footnotes.contains(f)) { footnotes.add(f); } return " (" + text + ")"; } } public List<String> getFootnotes() { return footnotes; } public static void main(String[] args) throws Exception { String s = new MatrixLibraries(MatrixLibrariesFormat.HTMLTABLE).getHtmlTable(); System.out.println(s); } public static void printLatex(String[] args) throws Exception { MatrixLibraries ml = new MatrixLibraries(MatrixLibrariesFormat.LATEX); Matrix m = ml.deleteRows(Ret.NEW, ml.getRowCount() - 1); String s = m.exportTo().string().asLatex(); s = s.replaceAll("table", "sidewaystable"); s = s.replaceAll("\\\\centering", ""); s = s.replaceAll("\\\\toprule", ""); s = s.replaceAll( "\\\\begin\\{tabular\\}", "\\\\caption{Overview of matrix libraries in Java}\n\\\\bigskip\n\\\\begin{centering}\n\\\\scalebox{0.8}{%\n\\\\begin{tabular}"); s = s.replaceAll("latest version", "\\\\toprule\nlatest version"); s = s.replaceAll("\\\\end\\{sidewaystable\\}", ""); s = s.replaceAll("\\\\end\\{tabular\\}", "\\\\end{tabular}}\n\\\\end{centering}"); s = s.replaceAll("version &", "\\\\toprule\nversion &"); s = s.replaceAll("Java 1.4 &", "\\\\midrule\nJava 1.4 &"); s = s.replaceAll("multithreaded &", "\\\\midrule\nmultithreaded &"); s = s.replaceAll("dense SA", "\\\\midrule\ndense SA"); s = s.replaceAll("sparse DOK", "\\\\midrule\nsparse DOK"); s = s.replaceAll("double &", "\\\\midrule\ndouble &"); s = s.replaceAll("2D &", "\\\\midrule\n2D &"); s = s.replaceAll("transpose &", "\\\\midrule\ntranspose &"); s = s.replaceAll("inverse &", "\\\\midrule\ninverse &"); s = s + "\\medskip\n"; s = s + "\\begin{tabular}{p{0.25\\textwidth}p{0.25\\textwidth}p{0.25\\textwidth}p{0.25\\textwidth}}\n"; s += "\\renewcommand{\\tabcolsep}{30pt}"; List<String> fn = ml.getFootnotes(); Collections.sort(fn); for (int i = 0; i < fn.size(); i++) { String f = fn.get(i); s = s + f; if (i % 4 == 3) { s = s + "\\\\\n"; } else { s = s + " & "; } } s = s + "\\end{tabular}\n"; s = s + "\\end{sidewaystable}"; System.out.println(s); } public String getHtmlTable() { StringBuilder s = new StringBuilder(); s.append("<div class=\"table-responsive\" style=\"overflow-x: scroll;\">\n"); s.append("<table class=\"text-center table table-striped table-hover table-condensed\">\n"); s.append("<tbody>\n"); s.append("<tr>\n"); s.append("<th>\n"); s.append("</th>\n"); for (int c = 0; c < getColumnCount(); c++) { String label = getColumnLabel(c); s.append("<th class=\"text-center\">" + label + "</th>\n"); } s.append("</tr>\n"); for (int r = 0; r < getRowCount(); r++) { s.append("<tr>\n"); String feature = getRowLabel(r); s.append("<th>" + feature + "</th>\n"); for (int c = 0; c < getColumnCount(); c++) { String result = getString(r, c); s.append("<td>" + result + "</td>\n"); } s.append("</tr>\n"); } s.append("</tbody>\n"); s.append("</table>\n"); s.append("</div>\n"); return s.toString(); } public String getHtmlList() { StringBuilder s = new StringBuilder(); for (int c = 0; c < getColumnCount(); c++) { String label = getColumnLabel(c); s.append("<h2>"); s.append(label); s.append("</h2>\n"); s.append("<p>These are the features of the <strong>" + label + "</strong> library:</p>"); s.append("<ul>\n"); for (int r = 0; r < getRowCount(); r++) { String feature = getRowLabel(r); String result = getString(r, c); if ("no".equals(result)) { } else if ("yes".equals(result)) { s.append("<li>" + label + " "); s.append(feature); s.append("</li>\n"); } else if (!"no".equals(result)) { s.append("<li>" + label + " "); s.append(feature + ": "); s.append(getString(r, c)); s.append("</li>\n"); } } s.append("</ul>\n\n"); } return s.toString(); } }