Menu

GluCat: Clifford algebra templates / News: Recent posts

GluCat 0.12.1 works with current toolchains

GluCat 0.12.1 works with current compilers such as g++ 13.2.0, clang++ 18.1.3,
and icpx 2024.2.1, as well as Python 3.12.3 and Cython 3.0.8.

The configuration option
./configure --with-eig=bindings
has been deprecated and will be removed in future versions.

Posted by Paul Leopardi 2024-08-18

Glucat 0.11.0 removed deprecated configuration options

The configuration options that are deprecated in GluCat 0.10.1 have been removed in GluCat 0.11.0. The comprehensive regression tests now test for 10 different combinations of configuration options, rather than the 15 different combinations tested previously.

Posted by Paul Leopardi 2022-04-01

Some GluCat configuration options have been deprecated as of 0.10.1

The following configuration options are deprecated as of GluCat 0.10.1 and will be removed in future releases. See INSTALL for details.

  --enable-check-isnan    check for NaN values at various places in the code
  --with-stdlib[=ARG]     C++ standard library to use (libcxx|libstdcxx)
  --with-map[=ARG]        type of map to use (map|stdunordered)
  --with-dense-mat        use dense matrices
  --with-random[=ARG]     type of random number generator to use (std|gsl)
  --with-pool-alloc       use Boost Pool allocator
Posted by Paul Leopardi 2022-02-26

GluCat 0.10.0 tuning is now done via a template parameter

GluCat 0.10.0 introduces a change in the way that the headers are to be used. Instead of

#include "glucat/glucat.h"
#include "my_tuning.h"
#include "glucat/glucat_imp.h"

with my_tuning.h containing a definition of Tune_P, the tuning policy class, you are expected to use

#include "glucat/glucat.h"
#include "glucat/glucat_imp.h"
#include "my_tuning.h"

with my_tuning.h containing a definition of the tuning policy class that you are using as a template parameter. See README for details.... read more

Posted by Paul Leopardi 2022-02-26

GluCat 0.9.0 has revised promotion, truncation and printing

GluCat 0.9.0 introduces some changes that improve usability of the results, but produce bit-for-bit different output when compared to previous versions.

  • Promotion of ScalarT now increases the number of floating point mantissa bits on all tested architectures, including ARM v8. Demotion is the reverse.

  • The default limit for the truncated() member function is now std::numericlimits<ScalarT>::epsilon().... read more

Posted by Paul Leopardi 2021-12-21

GluCat 0.8.5 now supports the Intel icpx oneAPI C++ compiler.

2021-10-06: 0.8.5

The GluCat headers compile with recent Clang, GCC and Intel C++ compilers, but are mostly unchanged. The ./configure script has been restructured to provide better support for configuration options and compiler differences. The PyClical plotting demo has been updated to support more recent versions

Posted by Paul Leopardi 2021-10-06

PyClical is now compatible with Python 3

2020-07-12: 0.8.4
PyClical has now been ported to Python 3, and can no longer be used with Python 2. The PyClical classes are unchanged except that the constructors
now use Python 3 default Unicode strings rather than Python 2 byte strings. The C++ code is essentially unchanged.

See INSTALL and README for details.

Posted by Paul Leopardi 2020-07-12

GluCat now builds with current toolchains

2020-05-13: 0.8.3

GluCat 0.8.3 builds with current versions of Clang, GCC and Intel compilers, Boost, Cython and Python. The source code is otherwise unchanged.

See INSTALL for details.

Posted by Paul Leopardi 2020-07-12

GluCat 0.8.2 compiles correctly with more modern C++ compilers

2016-07-06: 0.8.2:
The GluCat classes basis_matrix_t and framed_multi<> have been refined.

The class basis_matrix_t is now based on int rather than on Scalar_T. This
should make basis matrix generation more efficient, especially when Scalar_T
is of class dd_real or qd_real.

The class framed_multi<> is now based on either map<index_set_t, scalar_t=""> or
unordered_map<index_set_t, scalar_t="">, rather than the previous base class,
map<const index_set_t,="" scalar_t=""> or unordered_map<const index_set_t,="" scalar_t="">.
This is for compatibility with the libc++ implementations of these bases
classes.... read more</const></const></index_set_t,></index_set_t,>

Posted by Paul Leopardi 2016-07-10

GluCat 0.8.1 tarball updated with patches

I have updated glucat-0.8.1.tar.gz to include 4 recent commits that fix problems with make dist and make install. Please download glucat-0.8.1.tar.gz again if you downloaded before today (5 May).

Paul Leopardi committed [d9f624]

Try to repair more Makefile.am files
2 hours ago
Paul Leopardi committed [7b214b]

glucat-DESTDIR.patch provided by Atri Bhattacha...
2 hours ago
Paul Leopardi committed [420a1d]... read more

Posted by Paul Leopardi 2016-05-05

GluCat 0.8.1 makes testing faster, easier and more comprehensive.

The configuration option --with-tuning=arg controls test tuning via preprocessor
macros and the header files test/tuning.h and test/undefine.h.

The configuration option --enable-check-isnan controls checks for NaN values,
and the configuration option --with-pool-alloc controls the use of the Boost
pool allocator.

The scripts test/test-all-config-options.sh, test/diff-all-config-outputs.sh
and test/copy-all-config-outputs.sh enable comprehensive tesing of configuation
options.... read more

Posted by Paul Leopardi 2016-05-05

GluCat 0.8.0: All deprecated options have been removed from the code

All deprecated options have been removed from the code, along with the code associated with related defined options. Because this is a backwards-incompatible change, the version number has been bumped to 0.8.0.

Specfically, the code can no longer optionally use:
<ext/hash_map> (was enabled by the option _GLUCAT_USE_GNU_CXX_HASH_MAP),
<backward/hash_map> (_GLUCAT_USE_BACKWARD_HASH_MAP),
<tr1/unordered_map> (_GLUCAT_USE_TR1_UNORDERED_MAP),
<tr1/random> (the old default: the option _GLUCAT_USE_STD_RANDOM
is no longer needed, and is ignored, as <random> is now the default),
<alglib/evd.h> (_GLUCAT_USE_ALGLIB) or
<boost/numeric/bindings/lapack/gees.hpp> (_GLUCAT_USE_BINDINGS_V1).

Posted by Paul Leopardi 2015-09-08

GluCat Git repository is now mirrored on GitHub

I have created a mirror of the Git repository for GluCat on GitHub at https://github.com/penguian/glucat
Check it out (or clone or fork it)!

Posted by Paul Leopardi 2015-09-06

Conformal chaos: What happens when we play a chaos game in a conformal space?

What happens when randomness follows a well-defined pattern? What happens when we play a chaos game in a conformal space?
https://www.tumblr.com/search/penguian

For my Pozible project “The Schroedinger Experiment” I used my GluCat and PyClical software with Mayavi to create unique computer artwork for my $32+ supporters. The script plots 3 tori as the orbits of two orthogonal bivectors in 3D conformal geometric algebra, as a simple type of “chaos game.” Once the software had produced each 3D image, I adjusted the view to form a composition, and then saved it to a file at 4095 x 4095 resolution. The thumbnails presented in the gallery are 1/5 size: 819 x 819.... read more

Posted by Paul Leopardi 2015-09-05

GluCat 0.7.5: simplified and improved build process

The use of Autotools in configuring, building and installing GluCat and PyClical has been simplified and improved. Deprecated configuation options have been dropped. The default for --with-random is now std. The default for --with-map is now stdunordered.

Posted by Paul Leopardi 2015-09-05

GluCat 0.7.4: pyclical/PyClical.cpp is now included in download file

The file pyclical/PyClical.cpp was missing from glucat-0.7.4.tar.gz.This prevented PyClical from building on systems without Cython. The file pyclical/PyClical.cpp, built with Cython 0.19.1, is now included in the download.

Posted by Paul Leopardi 2015-01-29

GluCat 0.7.4 optionally improves the precision of transcendental functions

GluCat 0.7.4 optionally improves the precision of the sqrt, log and exp functions.

It does so by implementing constructors that allow mixed precision, e.g. a matrix_multi<float> can be initialized using a framed_multi<double>, etc. The precision of the sqrt(), log() and exp() functions is controlled by the tuning parameter function_precision.</double></float>

Posted by Paul Leopardi 2014-12-24

GluCat 0.7.3 fixes a bug in the PyClical tutorials

GluCat 0.7.3 fixes a bug where the line

print_exec("from PyClical import *")

was left out of some of the pyclical_tutorial*.py files.
The C++ code, Cython code and the configure and Makefiles are unchanged from
GluCat 0.7.2, other than updating the version number, and so these have not been
tested again.

Posted by Paul Leopardi 2014-04-02

Bug in some tutorials in GluCat 0.7.2 pyclical/demos is fixed in Git

Some of the PyClical tutorials in pyclical/demos are missing the line:

print_exec("from PyClical import *")

This is fixed in Git, and will be fixed in GluCat 0.7.3 to be released shortly.

For details, see
https://sourceforge.net/p/glucat/git/ci/f6be525bda3f7342c561a1e85c8dbb2d0ba09433/

Posted by Paul Leopardi 2014-04-02

GluCat 0.7.2 with PyClical now generates IPython notebooks.

The Pyclical tutorials are now accompanied by corresponding IPython notebooks.

The nork() function in matrix.h and matrix_imp.h that implements the left Kronecker quotient is now accompanied by the signed_perm_nork() function, which is faster for the case used by fast<>() in matrix_mult_imp.h.

Use of the Boost pool allocator with framed_multi<> is now optional, controlled via the new symbol _GLUCAT_USE_BOOST_POOL_ALLOC.... read more

Posted by Paul Leopardi 2014-03-31

GluCat 0.7.1: bug fix release

GluCat 0.7.1 fixes a bug which prevented compilation in the case where the class glucat::framed_multi<> is based on std::map.

Posted by Paul Leopardi 2012-11-10

GluCat 0.7.0 includes PyClical tutorials

GluCat 0.7.0 has more accurate sqrt and transcendental functions and includes PyClical tutorials.

The PyClical Python extension module now comes with a set of tutorials that guide you through working with Clifford algebra calculations in Python.

The GluCat library now supports C++11, including <unordered_map> and <random>.

The GluCat library now has transcendental functions that are more accurate when used with higher precision arithmetic. This is accomplished by using different
Pade' approximations according to the numerical precision needed.... read more

Posted by Paul Leopardi 2012-10-10

GluCat 0.6.0 includes PyClical

GluCat 0.6.0 includes the PyClical extension module for Python.

The PyClical extension module is based on the prototype from GluCat 0.5.0, but includes a much more comprehensive interface to the GluCat classes index_set<> and matrix_multi<>, as Python classes index_set and clifford. The functions and member functions defined in PyClical include doctests.

There are some changes to the clifford_algebra<> API:
o GluCat does not support complex Clifford algebras, so the real() function is now synonymous with scalar() and the imag() function always returns 0.
o New operators lhs | rhs and lhs |= rhs transform lhs by the twisted adjoint action of rhs.
o New member functions, grade() : maximum of the grades of each term; pure() : pure part.
o New function complexifier(val) : square root of -1 which commutes with all members of the frame of the multivector val. The name "elliptic" is now deprecated: use "complexifier" instead.
o New functions sqrt(val,i,prechecked), and log(val,i,prechecked) : square root and logarithm of multivector with specified complexifier.... read more

Posted by Paul Leopardi 2012-05-12

GluCat 0.5.1 fixes transcendental functions

GluCat 0.5.1 fixes sqrt and transcendental functions:

The sqrt() and log() functions, and functions based on them, such as cos(), acosh(), etc. may give incorrect results when using GluCat 0.5.0 and earlier. This is because the algorithms used in GluCat 0.5.0 and earlier for sqrt(x) and log(x) fail if x is represented as a matrix having a negative real eigenvalue.

This has now been fixed in GluCat 0.5.1, with the aid of external libraries which contain eigenvalue functions.... read more

Posted by Paul Leopardi 2010-05-31

PyCliCal: a Python interface to Glucat 0.5.0

GluCat now includes PyCliCal: a prototype Python interface to GluCat, implemented via Cython. The included files pyclical/pyclical_demo.py and pyclical/pyclical_demo.out highlight some of its capabilities.

The framed_multi<> and matrix_multi<> classes now also have a new static member function random(frm), which returns a random multivector within the given frame frm, with each coordinate independently distributed according to the standard normal distribution, rescaled by dividing by the square root of the dimension of the frame. The random() function uses either TR1 or GSL normal random numbers, via the random_generator<> class defined in glucat/random.h.... read more

Posted by Paul Leopardi 2010-05-27
MongoDB Logo MongoDB