Skip to content

Commit

Permalink
Merge pull request #96 from jacobdwatters/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
jacobdwatters authored Jul 11, 2024
2 parents 45bc235 + 189c527 commit 462913d
Show file tree
Hide file tree
Showing 2,013 changed files with 177,791 additions and 69,219 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: 11
java-version: 17
distribution: 'zulu' # Alternative distribution options are available.
- name: Cache SonarCloud packages
uses: actions/cache@v3
Expand Down
50 changes: 30 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,37 @@
# Flag4j
Flag4j is a fast linear algebra library for Java and provides operations and linear algebra routines for real/complex sparse/dense tensors, matrices, and vectors.

## State of Project as of 6-30-2023
Flag4j is currently in the final steps of development before an initial beta release. Nearly all features have been fully implemented or at least have a rudimentary beta implementation.
There is still some work to be done for sparse tensors and matrices. Once that has been completed, a beta release will be imminent.
## State of Project as of 16-FEB-2024
Flag4j is currently in the final steps of development before an initial beta release. Nearly all features have been fully implemented or beta implementations.

Updates:
- The QR, Hessenburg and Schur decompositions have had a complete overhall.
- QR/Hessenburg/Schur: The way reflectors are computed and applied has been significantly improved in terms of performance, stability, and sensitivity to over(under)flow issues.
- Schur: Some correcness issues have been ironed out and significant performance enhancements have been made. The decomposition uses an implicit double shifted QR algorithm.
This means computing eigenvalues should be more accuract/correct and significantly faster in most cases.
- Tensor Solver: Added a solver which can solve tensor equations of the form $A \cdot X = B$ where $A, \ X$, and $B$ are tensors of arbirary rank and shape as long as the shapes are conducive to
computing the tensor dot product `B = A.dot(X)`.
- Tensor Inverse: Added ability to compute the inverse of an arbitary invertible tensor $A$, $A^{-1}$ relative to a specified tensor product.
___

## Features and Functionality
Highlighted features are a work in progress and currently not fully implemented.

### Algebraic Objects
- Complex Numbers
- Vectors
- Real Dense Vector
- Real Sparse Vector
- Complex Dense Vector
- Complex Sparse Vector
- Real/Complex Dense Vector
- Real/Complex Sparse Vector
- Matrices
- Real Dense Matrix
- <mark>Real Sparse Matrix</mark>
- Complex Dense Matrix
- <mark>Complex Sparse Matrix</mark>
- Dense Matrices
- Real/Complex Dense Matrix
- Sparse Matrices
- Real/Complex COO Matrix
- Real/Complex CSR Matrix
- Real/Complex Symmetric Tri-diagonal Matrix.
- Permutation Matrix
- Tensors
- Real Dense Tensor
- <mark>Real Sparse Tensor</mark>
- Complex Dense Tensor
- <mark>Complex Sparse Tensor</mark>
- Real/Complex Dense Tensor
- Real/Complex Sparse COO Tensor

### Operations
- Basic Arithmetic Operations: Add, subtract, scalar/element multiply, scalar/element divide, etc.
Expand All @@ -44,7 +51,7 @@ Highlighted features are a work in progress and currently not fully implemented.
- Features: Matrix rank, symmetric, definiteness, eigenvalues and vectors, singularity, triangular, etc.
- Comparisons: Similar, etc.
- Tensor Operations:
- Arithmetic: Tensor dot product, tensor transpose, etc.
- Arithmetic: Tensor dot product, tensor transpose, tensor invers, etc.
- Comparisons: Tensor rank/dimension, etc.

### Matrix Decompositions
Expand All @@ -61,14 +68,17 @@ Highlighted features are a work in progress and currently not fully implemented.
- Singular Value Decomposition

### Linear Solvers
- Exact solution for well determined systems
- Exact solution for well determined matrix systems
- General systems
- Triangular systems
- Exact solution for well determined tensor equations
- Least Squares solution

### Linear and Homography Transformations
- Scale
- Shift
- <mark>Rotate</mark>
- <mark>Affine</mark>
- Rotate
- Affine
- Projections
- Orthographic
- Perspective
Expand Down
938 changes: 736 additions & 202 deletions docs/allclasses-index.html

Large diffs are not rendered by default.

66 changes: 47 additions & 19 deletions docs/allpackages-index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (16) on Sun Jul 09 11:47:10 MDT 2023 -->
<!-- Generated by javadoc (16) on Thu Aug 17 13:47:17 MDT 2023 -->
<title>All Packages</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2023-07-09">
<meta name="dc.created" content="2023-08-17">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
Expand Down Expand Up @@ -61,22 +61,30 @@ <h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
<div class="col-last even-row-color">
<div class="block">The base package of Flag4j which contains the main linear algebra objects.</div>
</div>
<div class="col-first odd-row-color"><a href="com/flag4j/complex_numbers/package-summary.html">com.flag4j.complex_numbers</a></div>
<div class="col-last odd-row-color">
<div class="col-first odd-row-color"><a href="com/flag4j/complex_matrix/package-summary.html">com.flag4j.complex_matrix</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/complex_numbers/package-summary.html">com.flag4j.complex_numbers</a></div>
<div class="col-last even-row-color">
<div class="block">
This package contains the CNumber object which stores complex numbers in rectangular format and provides several
methods allowing for computation with and manipulation of the complex numbers.</div>
</div>
<div class="col-first odd-row-color"><a href="com/flag4j/complex_sparse_matrix/package-summary.html">com.flag4j.complex_sparse_matrix</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/complex_tensor/package-summary.html">com.flag4j.complex_tensor</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/complex_vector/package-summary.html">com.flag4j.complex_vector</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/concurrency/package-summary.html">com.flag4j.concurrency</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/core/package-summary.html">com.flag4j.core</a></div>
<div class="col-last odd-row-color">
<div class="block">This package contains the core interfaces and abstract classes that specify the functionality of the algebraic objects
within Flag4j.</div>
</div>
<div class="col-first even-row-color"><a href="com/flag4j/core/dense/package-summary.html">com.flag4j.core.dense</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/core/dense/package-summary.html">com.flag4j.core.dense_base</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/core/sparse/package-summary.html">com.flag4j.core.sparse</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/core/sparse/package-summary.html">com.flag4j.core.sparse_base</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/exceptions/package-summary.html">com.flag4j.exceptions</a></div>
<div class="col-last even-row-color">&nbsp;</div>
Expand All @@ -90,31 +98,51 @@ <h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/linalg/transformations/package-summary.html">com.flag4j.linalg.transformations</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/package-summary.html">com.flag4j.operations</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/matrix/package-summary.html">com.flag4j.matrix</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/package-summary.html">com.flag4j.operations</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/common/complex/package-summary.html">com.flag4j.operations.common.complex</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/common/real/package-summary.html">com.flag4j.operations.common.real</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense_sparse/complex/package-summary.html">com.flag4j.operations.dense_sparse.complex</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense_sparse/real/package-summary.html">com.flag4j.operations.dense_sparse.real</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense_sparse/real_complex/package-summary.html">com.flag4j.operations.dense_sparse.real_complex</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense/complex/package-summary.html">com.flag4j.operations.dense.complex</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense/real/package-summary.html">com.flag4j.operations.dense.real</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense/real_complex/package-summary.html">com.flag4j.operations.dense.real_complex</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/sparse/complex/package-summary.html">com.flag4j.operations.sparse.coo.complex</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/common/complex/package-summary.html">com.flag4j.operations.common.complex</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/sparse/real/package-summary.html">com.flag4j.operations.sparse.coo.real</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/common/real/package-summary.html">com.flag4j.operations.common.real</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/sparse/real_complex/package-summary.html">com.flag4j.operations.sparse.coo.real_complex</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense_sparse/complex/package-summary.html">com.flag4j.operations.dense_sparse.complex</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/rng/package-summary.html">com.flag4j.rng</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense_sparse/real/package-summary.html">com.flag4j.operations.dense_sparse.real</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/sparse_complex_matrix/package-summary.html">com.flag4j.sparse_complex_matrix</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense_sparse/real_complex/package-summary.html">com.flag4j.operations.dense_sparse.real_complex</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/sparse_complex_tensor/package-summary.html">com.flag4j.sparse_complex_tensor</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense/complex/package-summary.html">com.flag4j.operations.dense.complex</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/sparse_complex_vector/package-summary.html">com.flag4j.sparse_complex_vector</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/dense/real/package-summary.html">com.flag4j.operations.dense.real</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/sparse_matrix/package-summary.html">com.flag4j.sparse_matrix</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/dense/real_complex/package-summary.html">com.flag4j.operations.dense.real_complex</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/sparse_tensor/package-summary.html">com.flag4j.sparse_tensor</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/sparse/complex/package-summary.html">com.flag4j.operations.sparse.complex</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/sparse_vector/package-summary.html">com.flag4j.sparse_vector</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/operations/sparse/real/package-summary.html">com.flag4j.operations.sparse.real</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/tensor/package-summary.html">com.flag4j.tensor</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="com/flag4j/operations/sparse/real_complex/package-summary.html">com.flag4j.operations.sparse.real_complex</a></div>
<div class="col-first odd-row-color"><a href="com/flag4j/util/package-summary.html">com.flag4j.util</a></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><a href="com/flag4j/util/package-summary.html">com.flag4j.util</a></div>
<div class="col-first even-row-color"><a href="com/flag4j/vector/package-summary.html">com.flag4j.vector</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</main>
Expand Down
Loading

0 comments on commit 462913d

Please sign in to comment.