A high-performance Java API wrapper for arblib, the fantastic and amazing arbitrary-precision ball arithmetic C library, implemented via SWIG

Related tags

GUI arb4j
Overview
To build this library you will need the following:

SWIG (Tested with Versions 4.0.1 and 4.0.2)
libflint-arb-dev along with its dependencies (Tested with 2.19.0)
JDK (Tested with jdk-17 from Oracle)

Once you have acquired these, run the bash script in the bin/
subdirectory called "gaw" which stands for "generate arblib wrapper",
which will then cause the .i files in the native/ subdirectory to be
parsed with SWIG and the corresponding java and C source files are generated.
After that happens, the script then calls the bin/caw which stands for
"compile arblib wrapper" which, if all goes well, should leave a file
named libarblib.so in root directory of the project

The output should look this if all goes well.

stephen@msi:~/arb4j$ gaw
+ readlink -f /home/stephen/fm/bin/gaw
+ dirname /home/stephen/git/arb4j/bin/gaw
+ BASEDIR=/home/stephen/git/arb4j/bin/..
+ cd /home/stephen/git/arb4j/bin/..
+ export INCLUDES=-I/usr/include/x86_64-linux-gnu -I/usr/include/linux -I/usr/include/flint -I/usr/include -I/usr/include/i386-linux-gnu -I/usr/lib/gcc/x86_64-linux-gnu/11/include/
+ swig -debug-classes -v -java -package arblib -outdir src/arblib -I/usr/include/x86_64-linux-gnu -I/usr/include/linux -I/usr/include/flint -I/usr/include -I/usr/include/i386-linux-gnu -I/usr/lib/gcc/x86_64-linux-gnu/11/include/ native/arb.i
Language subdirectory: java
Search paths:
   ./
   /usr/include/x86_64-linux-gnu/
   /usr/include/linux/
   /usr/include/flint/
   /usr/include/
   /usr/include/i386-linux-gnu/
   /usr/lib/gcc/x86_64-linux-gnu/11/include//
   ./swig_lib/java/
   /usr/share/swig4.0/java/
   ./swig_lib/
   /usr/share/swig4.0/
Preprocessing...
Starting language-specific parse...
Processing unnamed structs...
Processing types...
C++ analysis...
Generating wrappers...
Classes
------------
arf_interval_struct
mag_struct
acb_struct
dirichlet_group_struct
dirichlet_char_struct
dirichlet_prime_group_struct
arb_struct
mantissa_noptr_struct
mantissa_ptr_struct
mantissa_struct
arf_struct
__mpfr_struct
acb_poly_struct
+ /home/stephen/git/arb4j/bin/../bin/caw
+ export JAVA_HOME=/usr/lib/jvm/jdk-17
+ readlink -f /home/stephen/git/arb4j/bin/../bin/caw
+ dirname /home/stephen/git/arb4j/bin/caw
+ export BASEDIR=/home/stephen/git/arb4j/bin/..
+ cd /home/stephen/git/arb4j/bin/..
+ export INCLUDES=-I/usr/lib/jvm/jdk-17/include -I/usr/lib/jvm/jdk-17/include/linux
+ export SOURCES=native/complex_plot.c native/arb_wrap.c
+ gcc -O3 -fPIC -shared native/complex_plot.c native/arb_wrap.c -I/usr/lib/jvm/jdk-17/include -I/usr/lib/jvm/jdk-17/include/linux -olibarblib.so -lflint-arb






If that looks good, then go ahead and run "mvn install" or just open
the project in Eclipse with the CDT (and Groovy) packages installed
and let the builder call gaw/caw for you and open the progam "Zplot"
or run the script bin/updateClasspath before running bin/Zplot to run
the program from the console




Stephen Crowley
Feb 17th, 2022
Comments
  • algebraic expression parser, evaluator and compiler

    algebraic expression parser, evaluator and compiler

    this differentiate() method here that returns a ComplexFunction is just syntatic sugar, it would be really cool to actually implement Automatic Differentiation and synthesizing the runtime code on the fly from the generated derivative expressions with some java virtual machine opcode instructions rather than having to write the code in java by hand

    opened by crowlogic 6
  • git tracks the output of swig

    git tracks the output of swig

    One time I was messing around and upon running bin/gaw somehow triggered Swig to update the version of the arb wrapper, which modified many files in src/arb/ that were being tracked by Git.

    Given: any files that are generated from other tracked files (and that the developer would not modify) should not be tracked by Git and should be matched in the project .gitignore file.

    Suggestion: add the files generated by Swig to .gitignore, or give them their own directory under src/arb/ and ignore that directory.

    opened by boopcamt 4
  • use 'foreign memory' Incubator module instead of JNI to alleviate the problems preventing large animations from being rendered within a single JVM

    use 'foreign memory' Incubator module instead of JNI to alleviate the problems preventing large animations from being rendered within a single JVM

    currently animation rendering crashes because of this and I refuse to have to start and stop the JVM a bunch of times over what is a design flaw with regards there being no way to explicitly unmap the byte buffer from java

    opened by crowlogic 4
  • project gitignore files contain user-specific patterns

    project gitignore files contain user-specific patterns

    Some .gitignore files in the project seem to match editor-specific temp files. For example, native/.gitignore contains the pattern /arb.i~

    https://git-scm.com/docs/gitignore :

    Which file to place a pattern in depends on how the pattern is meant to be used.

    • Patterns which should be version-controlled and distributed to other repositories via clone (i.e., files that all developers will want to ignore) should go into a .gitignore file.

    • Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user’s workflow) should go into the $GIT_DIR/info/exclude file.

    • Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.

    Suggestions:

    • Reserve project .gitignore files only for stuff that every user should ignore, like build artifacts.
    • Keep user-specific patterns in your personal $HOME/.config/git/ignore. For instance, match any file that ends in a tilde with this pattern: *~

    Bonus suggestion: probably only need one .gitignore file for the entire project, easier to keep track of things that way

    opened by boopcamt 2
  • Lame coefficients & orthogonal nets

    Lame coefficients & orthogonal nets

    API to support calculation of the Lamé coefficients of an orthogonal curvilinear coordinate system u,v,w in space. In terms of the Lamé coefficients in the coordinates u,v,w one can express

    • the element of arc length
    • the element of surface area and
    • the volume element
    opened by crowlogic 2
  • Changeable color scheme(Caching function values)

    Changeable color scheme(Caching function values)

    use memory mapped byte buffers as a first step then initialize new Complex objects pointing to some offset within the buffer. Then remains the part to specify a custom GMP allocator based on a similiar idea of a heap based on a direct memory mapped file offset

    opened by crowlogic 2
  • bin scripts style & portability

    bin scripts style & portability

    After issue-117 branch is merged, make the other arb4j/bin/ scripts as stylish and portable as bin/gaw and bin/caw.

    Warning: these scripts call some commands that imply undocumented dependencies, such as valgrind, mvn (Maven), and dict.

    opened by boopcamt 1
  • Issue 117: build portability

    Issue 117: build portability

    closes #117

    Made changes to improve the build and enhance portability. Tested the build on Ubuntu 20 and Debian 11, ensured that JAVA_PATH is detected correctly, and that whitespace in JAVA_HOME and the project base path are handled correctly.

    P.S.: I realize that the level of detail might be a bit uncalled for here. Learning shell and make has been a pet project of mine, and I really wanted to unleash it into the wild. However, if my pet causes any trouble then it goes right back into the crate.

    ...and the way to stay with the future as it moves is to always play your systems more grand than they seem to be right now.

    Alan Kay at OOPSLA 1997. The Computer Revolution Hasn't Happened Yet

    opened by boopcamt 1
  • Lemniscate elliptic functions - Wikipedia

    Lemniscate elliptic functions - Wikipedia

    https://en.m.wikipedia.org/wiki/Lemniscate_elliptic_functions Compare hypergeometric function implementation for arclength of lemniscate to numeric integration

    opened by crowlogic 1
  • Create latex expression rendered within Eclipse JDT editor

    Create latex expression rendered within Eclipse JDT editor

    http://help.eclipse.org/2022-03/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fextension-points%2Forg_eclipse_ui_workbench_texteditor_codeMiningProviders.html&resultof%3D%2522%2563%256f%2564%2565%2522%2520%2522%256d%2569%256e%2569%256e%2567%2522%2520%2522%256d%2569%256e%2565%2522%2520

    opened by crowlogic 1
Owner
null
Open Weather Map API wrapper for Java.

Java Open Weather API Wrapper Open Weather Map API wrapper for Java. This project allows you to seamlessly implement the Open Weather Map API into you

Will 2 Feb 6, 2022
💠 Undecorated JavaFX Scene with implemented move, resize, minimise, maximise, close and Windows Aero Snap controls.

Support me joining PI Network app with invitation code AlexKent FX-BorderlessScene ( Library ) ?? Undecorated JavaFX Scene with implemented move, resi

Alexander Kentros 125 Jan 4, 2023
A collection of Apple UI controls implemented in JavaFX.

Apple FX A collection of Apple UI controls implemented in JavaFX. Available Macos controls: MacosButton MacosCheckBox MacosRadioButton MacosLabel Maco

Gerrit Grunwald 17 Sep 25, 2022
Glucose status monitor for Nightscout implemented in JavaFX

GlucoStatusFX A glucose status monitor for Nightscout implemented in JavaFX. Donations are welcome at Paypal Intro GlucoStatusFX is a JavaFX applicati

Gerrit Grunwald 17 Dec 15, 2022
A low intrusive, configurable android library that converts layout XML files into Java code to improve performance

qxml English 一个低侵入,可配置的 Android 库,用于将 layout xml 文件转换为 Java 代码以提高性能。 与X2C的对比 X2C: 使用注解处理器生成View类,使用时需要在类中添加注解,并替换setContentView方法,侵入性较强; 对于布局属性的支持不够完美

null 74 Oct 6, 2022
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

GSI CS-CO/ACO 385 Dec 30, 2022
Provides a Java API to use the JavaScript library d3.js with the JavaFx WebView

javafx-d3 Provides a Java API for using the JavaScript library d3.js with JavaFx Applications. Many thanks to the authors of the projects gwt-d3 [1] a

null 98 Dec 19, 2022
Flash cards app using JavaFX, Scene Builder and persistence using Serialization with JAVA IO API

Flashcards - JavaFX , Scene Builder, Serialized Persistence JAVA IO API Main Scene that will show all the Decks in Flash Card App Add or Edit Cards in

Ali Raja 3 Nov 28, 2022
In the Developer - Platform of EdgeGallery, we have provided a lot of useful APIs, in this project, try to simulates APIs of the competence center to help develoers test API request and response online.

api-emulator api-emulator模块,为EdgeGallery提供了基本能力的模拟api,开发者可以调用该模拟器提供的api,不需要真实部署就可以查看平台已有的能力。目前该api-emulator集成了两种平台能力:位置服务和人脸识别能力。 平台能力简介 位置服务 提供用户位置,E

EdgeGallery 21 Dec 25, 2021
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

⚡ A powerful & easy to use chart library for Android ⚡ Charts is the iOS version of this library Table of Contents Quick Start Gradle Maven Documentat

Philipp Jahoda 36k Jan 9, 2023
This is a clone of Mircosoft Paint that uses Java and its javax.swing library

PaintClone This is a clone of Mircosoft Paint that uses Java and its javax.swing library You are able to select a RBG colors and creates a pallet of t

Nick Quinones 2 Feb 17, 2022
A simple implementation of the Android In-App Billing API.

Google In-App Billing Library v4+ A simple implementation of the Android In-App Billing API. It supports: in-app purchases (both consumable and non-co

Moisoni Ioan 79 Dec 12, 2022
Open API demo for CloudQuery

open-api-demo This project is an example for CloudQuery Community, which can assist community users in code development such as organizational structu

ToolsLab-BinTools 12 Jan 4, 2023
Everest - an upcoming REST API testing client written in JavaFX

Everest (formerly RESTaurant) is an upcoming REST API testing client written in JavaFX. Everest running on Windows 10. Why Everest? Everest is written

Rohit Awate 810 Dec 27, 2022
A JavaFX 3D Visualization and Component Library

FXyz3D FXyz3D Core: FXyz3D Client: FXyz3D Importers: A JavaFX 3D Visualization and Component Library How to build The project is managed by gradle. To

null 16 Aug 23, 2020
A library for creating and editing graph-like diagrams in JavaFX.

Graph Editor A library for creating and editing graph-like diagrams in JavaFX. This project is a fork of tesis-dynaware/graph-editor 1.3.1, which is n

Steffen 125 Jan 1, 2023
Flow Visualization Library for JavaFX and VRL-Studio

VWorkflows Interactive flow/graph visualization for building domain specific visual programming environments. Provides UI bindings for JavaFX. See htt

Michael Hoffer 274 Dec 29, 2022
Simple, maintained and highly customizable colorpicker library for Android.

Colorpicker Library for Android Simple, maintained and highly customizable color picker library for Android. It is packed with ColorPicker Popup, Colo

Mrudul Tora 31 Oct 3, 2022