Git Product home page Git Product logo

callforsanity / gaalop Goto Github PK

View Code? Open in Web Editor NEW
91.0 13.0 27.0 24.92 MB

Gaalop (Geometic Algebra Algorithms Optimizer) is a software to compile and optimize geometric algebra (GA) expressions into high-level programming language code. Geometric algebra expressions can be developed using the freely available CLUCalc software by Christian Perwass. Gaalop optimizes CLUCalc expressions and produces C++ (AMP), OpenCL, CUDA, CLUCalc or LaTeX output. The optimized code is free of geometric algebra operations and runs very efficiently on various platforms.

Home Page: http://www.gaalop.de

License: GNU Lesser General Public License v3.0

Java 93.66% GAP 0.73% Shell 0.01% HTML 0.01% Batchfile 0.01% ANTLR 0.26% JavaScript 5.33%
geometric-algebra compiler precompiler maxima

gaalop's Introduction

Linux Build Status Windows Build status

Gaalop

Gaalop (Geometic Algebra Algorithms Optimizer) is a software to compile and optimize geometric algebra (GA) expressions into high-level programming language code. Geometric algebra expressions can be developed using the freely available CLUCalc software by Christian Perwass. Gaalop optimizes CLUCalc expressions and produces C++ (AMP), OpenCL, CUDA, CLUCalc or LaTeX output. The optimized code is free of geometric algebra operations and runs very efficiently on various platforms.

What is Geometric Algebra?

This is probably best explained in this article: https://slehar.wordpress.com/2014/03/18/clifford-algebra-a-visual-introduction/ or this book: http://www.amazon.de/Foundations-Geometric-Algebra-Computing-Geometry/dp/3642317936

Gaalop Precompiler (GPC)

Note that this repository also contains Gaalop Precompiler (GPC) in the branch gaalop_precompiler. GPC integrates Gaalop directly into CMake-generated C/C++-toolchains. Gaalop Precompiler reuses most of the code of Gaalop which is why merges from Gaalop are required quite often.

License

The code of both projects is licensed under the LGPL 3.0.

Contributions

Contributions are welcome. Please fork and create a pull request.

How to compile?

Please visit the wiki on this repository. You will find manuals for compiling GAALOP and GAALOP Precompiler.

gaalop's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gaalop's Issues

Compiling to C

Hi, is there a way that I can use this tool to compile a G(3,0,1) algebra library to pure C? I'd like to create some bindings for more unusual languages.
Thanks

antlr 3.5.2 and some pom.xml files needed upgrade and editing

I have been trying to learn about this software. I'm not really a programmer, but I have sometimes written some code. I started by cloning the master and gaalop_precompiler branches. Then, I followed instructions on building the gaalop_precompiler branch (a copy of it) it using cmake-gui. I found that I had to hack on a few files and upgrade "antlr" files to version 3.5.2. My system is Slackware64 linux.

First, I downloaded ~/bin/antlr-3.5.2-complete.jar and made a file ~/bin/antlr with:

#!/bin/bash
java -jar ~/bin/antlr-3.5.2-complete.jar $@
chmod +x ~/bin/antlr

Then I symlinked ~/bin/antlr3 -> ~/bin/antlr just in case it is called as antlr3.

Then, following build instructions I managed to finish the cmake-gui part and generate a good Makefile. I ran "make" and the build process starts, but I ran into errors in the build of several of the modules. The errors are all about antlr.

Each module subdirectory has a "pom.xml" file that I had to modify with:

        <plugins>
            <plugin>
                <groupId>org.antlr</groupId>
                <artifactId>antlr3-maven-plugin</artifactId>
                <version>3.5.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>antlr</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--
                      This configuration is required to use the tokenVocab directive in ANTLR.
                      Otherwise the .token files will not be found.
                      See http://mojo.codehaus.org/antlr3-maven-plugin/examples/tokenVocab.html
                    -->
            <sourceDirectory>src/main/antlr</sourceDirectory>
            <outputDirectory>src/main/antlr</outputDirectory>
                </configuration>
            </plugin>
        </plugins>

and

        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr-runtime</artifactId>
            <version>3.5.2</version>
            <type>jar</type>
        </dependency>

I also put: antlr-runtime-3.5.2.jar -> antlr-3.5.2-runtime.jar
into the "dependencies" directory.

Since I use java 8, I also modified the main pom.xml with:

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>

The build system is kind of complicated, and I could only hack at it to make it work. I do not fully understand all about how it works. At this point, with the changes given above, the build is all SUCCESS for all modules, including at the end I get:

Linking CXX static library libgpc-vis-opengl.a
[100%] Built target gpc-vis-opengl

Okay, I can try now to see if this build actually works, and how to package and install it on my system. Maybe the developers can consider updating all of the dependencies of this project to current versions of software etc, so that it can maybe work without changes I had to make. I think that most would be using Java 8 at this time, but maybe I do not know since I do not develop Java except for once a long time ago for a small project.

class not found: com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

Windows 10. with JDK 15, 12 and 16

Had to change code in 'gui\src\main\java\de\gaalop\gui\main.java'

import javax.swing.plaf.nimbus.*;

public void run() {
    try {
              if (Platform.isWindows()) {
               UIManager.setLookAndFeel(new NimbusLookAndFeel());
         //       UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
              }
            } catch (Exception e) {
                e.printStackTrace();
            }

Planes are not drawn in GAALPWeb

The web tool is not displaying geometric objects.
Here is the code:
image

And the visualization:

image

Rendering works. I can rotate the camera and see the grid move, but the plane is missing.

I am using the Edge Browser on Windows 11.
Edge: Version 103.0.1264.77 (Official build) (64-bit)

Dependency versions?

Hi,

I'm not sure what versions of dependencies are expected, but on arch linux using maven 3.6.3-1, all the jdk variations with jdk8 getting furthest, and cmake 3.17.3-1, generates the following error on make.

What versions of dependencies are supported?

Cheers,

Alan.

de/gaalop/clucalc/input/CluCalcLexer.g
de/gaalop/clucalc/input/CluCalcParser.g
[ERROR] error(10):  internal error: Can't get property indirectDelegates using method get/isIndirectDelegates from org.antlr.tool.Grammar instance : java.lang.NullPointerException
java.util.Objects.requireNonNull(Objects.java:203)
java.util.ArrayList.removeAll(ArrayList.java:693)
org.antlr.tool.CompositeGrammar.getIndirectDelegates(CompositeGrammar.java:221)
org.antlr.tool.Grammar.getIndirectDelegates(Grammar.java:2516)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:563)
org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:514)
org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:416)
org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
org.antlr.stringtemplate.language.ActionEvaluator.templateApplication(ActionEvaluator.java:216)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:126)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1275)
org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:460)
org.antlr.Tool.generateRecognizer(Tool.java:420)
org.antlr.Tool.process(Tool.java:287)
org.antlr.mojo.antlr3.AbstractAntlr3PluginMojo.execute(AbstractAntlr3PluginMojo.java:156)
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
de/gaalop/clucalc/input/CluCalcTransformer.g
[ERROR] error(10):  internal error: Can't get property indirectDelegates using method get/isIndirectDelegates from org.antlr.tool.Grammar instance : java.lang.NullPointerException
java.util.Objects.requireNonNull(Objects.java:203)
java.util.ArrayList.removeAll(ArrayList.java:693)
org.antlr.tool.CompositeGrammar.getIndirectDelegates(CompositeGrammar.java:221)
org.antlr.tool.Grammar.getIndirectDelegates(Grammar.java:2516)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.antlr.stringtemplate.language.ASTExpr.invokeMethod(ASTExpr.java:563)
org.antlr.stringtemplate.language.ASTExpr.rawGetObjectProperty(ASTExpr.java:514)
org.antlr.stringtemplate.language.ASTExpr.getObjectProperty(ASTExpr.java:416)
org.antlr.stringtemplate.language.ActionEvaluator.attribute(ActionEvaluator.java:351)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:136)
org.antlr.stringtemplate.language.ActionEvaluator.templateApplication(ActionEvaluator.java:216)
org.antlr.stringtemplate.language.ActionEvaluator.expr(ActionEvaluator.java:126)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:84)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:722)
org.antlr.stringtemplate.language.ASTExpr.writeAttribute(ASTExpr.java:659)
org.antlr.stringtemplate.language.ActionEvaluator.action(ActionEvaluator.java:86)
org.antlr.stringtemplate.language.ASTExpr.write(ASTExpr.java:148)
org.antlr.stringtemplate.StringTemplate.write(StringTemplate.java:700)
org.antlr.codegen.CodeGenerator.write(CodeGenerator.java:1275)
org.antlr.codegen.Target.genRecognizerFile(Target.java:94)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:460)
org.antlr.Tool.generateRecognizer(Tool.java:420)
org.antlr.Tool.process(Tool.java:287)
org.antlr.mojo.antlr3.AbstractAntlr3PluginMojo.execute(AbstractAntlr3PluginMojo.java:156)
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
[INFO] ------------------------------------------------------------------------
[INFO] Skipping Gaalop
[INFO] This project has been banned from the build due to previous failures.
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Gaalop 1.0.0:
[INFO] 
[INFO] Gaalop ............................................. SUCCESS [  0.002 s]
[INFO] Gaalop API ......................................... SUCCESS [  3.951 s]
[INFO] Gaalop GlobalSettings .............................. SUCCESS [  0.031 s]
[INFO] Gaalop CluCalc Plugin .............................. FAILURE [  7.867 s]
[INFO] Gaalop Algebra ..................................... SKIPPED
[INFO] Gaalop Visual Code Inserter ........................ SKIPPED
[INFO] Gaalop Maple Plugin ................................ SKIPPED
[INFO] Gaalop TBA Plugin .................................. SKIPPED
[INFO] Gaalop GAPP ........................................ SKIPPED
[INFO] Gaalop C/C++ Plugin ................................ SKIPPED
[INFO] Gaalet Plugin ...................................... SKIPPED
[INFO] Gaalop Graphviz Plugin ............................. SKIPPED
[INFO] Gaalop Java Plugin ................................. SKIPPED
[INFO] Gaalop compressed storage C/C++ Plugin ............. SKIPPED
[INFO] Gaalop GAPP Pretty Printer Plugin .................. SKIPPED
[INFO] Gaalop GAPPOpenCL Plugin ........................... SKIPPED
[INFO] Gaalop Precompiler ................................. SKIPPED
[INFO] Gaalop Starter ..................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  12.027 s
[INFO] Finished at: 2020-06-01T15:41:01-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.antlr:antlr3-maven-plugin:3.1.1.2:antlr (default) on project clucalc: Antlr grammar processing failed with errors. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :clucalc
make[2]: *** [CMakeFiles/gaalop.dir/build.make:77: gaalop] Error 1
make[1]: *** [CMakeFiles/Makefile2:247: CMakeFiles/gaalop.dir/all] Error 2
make: *** [Makefile:183: all] Error 2```

Start from command line

How do you start gaalop from commandline? Or rather, how can I generate cpp files from clu files without starting the GUI?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.