Skip to content

Commit

Permalink
Merge pull request #1 from cicirello/development
Browse files Browse the repository at this point in the history
Reorganized repo and added maven pom.xml
  • Loading branch information
cicirello authored Oct 16, 2020
2 parents 6e18d8b + 0aa0769 commit 8975bdd
Show file tree
Hide file tree
Showing 10 changed files with 383 additions and 28 deletions.
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: "maven" # See documentation for possible values
directory: "/" # Location of package manifests
target-branch: "development"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "development"
schedule:
interval: "daily"

22 changes: 22 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: build

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.11
uses: actions/setup-java@v1
with:
java-version: 1.11

- name: Build with Maven
run: mvn -B package
95 changes: 95 additions & 0 deletions .github/workflows/maven-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Maven Package

on:
release:
types: [created]

jobs:
publish:

runs-on: ubuntu-latest

env:
artifact_name: ziggurat

steps:
- uses: actions/checkout@v2

- name: Get the release version
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}

- name: Set up JDK 11 for deploy to OSSRH
uses: actions/setup-java@v1
with:
java-version: 1.11
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_CENTRAL_TOKEN
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE

- name: Build with Maven
run: mvn -B package --file pom.xml

- name: Update package version
run: mvn versions:set -DnewVersion=${{ steps.get_version.outputs.VERSION }}

- name: Publish to Apache Maven Central
run: mvn deploy -PossrhDeploy
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}

- name: Set up JDK 11 for deploy to github packages
uses: actions/setup-java@v1
with:
java-version: 1.11
server-id: github

- name: Publish to GitHub Packages Apache Maven
run: mvn deploy -PgithubDeploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Get the upload URL for a release
id: get
uses: bruceadams/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Release Asset jar
id: upload-release-asset-jar
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get.outputs.upload_url }}
asset_path: target/${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}.jar
asset_name: ${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}.jar
asset_content_type: application/java-archive

- name: Upload Release Asset sources
id: upload-release-asset-src
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get.outputs.upload_url }}
asset_path: target/${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}-sources.jar
asset_name: ${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}-sources.jar
asset_content_type: application/java-archive

- name: Upload Release Asset docs
id: upload-release-asset-docs
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get.outputs.upload_url }}
asset_path: target/${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}-javadoc.jar
asset_name: ${{ env.artifact_name }}-${{ steps.get_version.outputs.VERSION }}-javadoc.jar
asset_content_type: application/java-archive


1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
target/
20 changes: 13 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ZigguratGaussian
# Ziggurat Gaussian

## Java implementation of the Ziggurat algorithm for generating Gaussian distributed random numbers

Copyright (C) 2015, 2017-2019 Vincent A. Cicirello.
Copyright (C) 2015, 2017-2020 Vincent A. Cicirello.

https://www.cicirello.org/

Expand All @@ -14,10 +14,10 @@ The Ziggurat algorithm is significantly faster than the more commonly encountere
Polar method, and has some other desirable statistical properties.
The ZigguratGaussian class is a Java port of the GNU Scientific
Library's C implementation (Voss, 2005) of the Ziggurat method.
In porting to Java, we have made a few subtle, and minor, optimizations, the details of
In porting to Java, we have made several optimizations, the details of
which can be found in the source code comments, which highlights any
differences between this Java implementation and the C implementation on which it
is based.
differences between this Java implementation and the
C implementation on which it is based.

This Java implementation originated as part of an effort to speed
up the runtime of a parallel genetic algorithm (PGA). The PGA in
Expand All @@ -40,6 +40,12 @@ additional experimental data:
* P. H. W. Leong, G. Zhang, D. Lee, W. Luk, and J. Villasenor. [A Comment on the Implementation of the Ziggurat Method](https://www.jstatsoft.org/article/view/v012i07). *Journal of Statistical Software*. 12(7):1–4, 2005.
* J. Voss. [The Ziggurat Method for Generating Gaussian Random Numbers](http://www.seehuhn.de/pages/ziggurat). GSL: GNU Scientific Library. 2005.

## Repository Organization
## Build with Maven

Source code is found in the /src folder. JUnit test cases are found in the /tests folder.
If you want to build from the source, then execute `mvn package` at the root
of the repository.

## License

The example programs in this repository are licensed under
the [GNU General Public License 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html).
222 changes: 222 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.cicirello</groupId>
<artifactId>ziggurat</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>

<name>Ziggurat Gaussian</name>

<description>This repository contains a Java implementation
of the Ziggurat algorithm for generating Gaussian distributed
pseudorandom numbers. The Ziggurat algorithm is significantly
faster than the more commonly encountered Polar method, and
has some other desirable statistical properties. The
ZigguratGaussian class is a Java port of the GNU Scientific
Library's C implementation (Voss, 2005) of the Ziggurat method.
In porting to Java, we have made several optimizations, the details of
which can be found in the source code comments, which highlights any
differences between this Java implementation and the
C implementation on which it is based. This package also includes
an implementation of the Polar Method, included to enable comparing
speed advantage of the Ziggurat algorithm.
</description>

<url>https://github.com/cicirello/ZigguratGaussian</url>

<licenses>
<license>
<name>GPL-3.0-or-later</name>
<url>https://www.gnu.org/licenses/gpl-3.0.en.html</url>
<distribution>repo</distribution>
<comments>
Ziggurat Gaussian.
Copyright (C) 2020 Vincent A. Cicirello.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/.
</comments>
</license>
</licenses>

<developers>
<developer>
<name>Vincent A Cicirello</name>
<email>[email protected]</email>
<url>https://www.cicirello.org/</url>
<organization>Cicirello.Org</organization>
<organizationUrl>https://www.cicirello.org/</organizationUrl>
</developer>
</developers>

<organization>
<name>Cicirello.Org</name>
<url>https://www.cicirello.org/</url>
</organization>

<profiles>
<profile>
<id>ossrhDeploy</id>
<distributionManagement>
<repository>
<id>ossrh</id>
<name>Central Repository OSSRH</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<snapshotRepository>
<id>ossrh</id>
<name>Central Repository OSSRH</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>githubDeploy</id>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub cicirello Apache Maven Packages</name>
<url>https://maven.pkg.github.com/cicirello/ZigguratGaussian</url>
</repository>
</distributionManagement>
</profile>
</profiles>

<issueManagement>
<system>github</system>
<url>https://github.com/cicirello/ZigguratGaussian/issues</url>
</issueManagement>

<scm>
<connection>scm:git:git://github.com/cicirello/ZigguratGaussian.git</connection>
<developerConnection>scm:git:ssh://github.com:cicirello/ZigguratGaussian.git</developerConnection>
<url>http://github.com/cicirello/ZigguratGaussian/tree/main</url>
</scm>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
</dependency>
</dependencies>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>11</maven.compiler.release>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<windowtitle>Ziggurat Gaussian</windowtitle>
<doctitle>Ziggurat Gaussian</doctitle>
<author>true</author>
<version>false</version>
<notimestamp>true</notimestamp>
<bottom><![CDATA[Copyright &copy; 2019-2020 <a href=\"https://www.cicirello.org/\" target=_top>Vincent A. Cicirello</a>. All rights reserved.]]></bottom>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>**/*TestCases.java</include>
<include>**/*Tests.java</include>
<include>**/*TestCase.java</include>
<include>**/*Test.java</include>
<include>**/Test*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>

</project>
Loading

0 comments on commit 8975bdd

Please sign in to comment.