Skip to content

Instantly share code, notes, and snippets.

View multiplemonomials's full-sized avatar

Jamie Smith multiplemonomials

  • USC Rocket Propulsion Lab
View GitHub Profile
@multiplemonomials
multiplemonomials / alu_logic_tester.py
Last active September 17, 2019 00:41
Test suite for ALU logic equations for EE 457 Lab 3
import numpy as np
NUM_BITS = 4
def bitwise_not(num:int, width=None):
"""Python doesn't have bitwise not so we have to improvise using XOR"""
if width is None:
width = num.bit_length() + 1
@multiplemonomials
multiplemonomials / BundleOSXDependencies.cmake
Created September 3, 2018 23:40
BundleOSXDependencies
# Script run at install-time to:
# * locate dependencies of executables and libraries
# * copy them to the install directory
# * fix the install_name of the depender to point to the dependency on the RPATH
# * add a new RPATH entry on the dependency for its new location and remove its old install name
# * repeat above for dependencies of the dependency, and all other dependencies
# arguments:
# PACKAGE_PREFIX -- root of a UNIX-structure package to operate on
# CMAKE_SHARED_LIBRARY_SUFFIX -- pass this variable in from your CMake script
@multiplemonomials
multiplemonomials / Preferences.sublime-settings
Created August 7, 2018 21:33
My Sublime Text config file
{
"color_scheme": "Packages/Color Scheme - Default/Monokai.sublime-color-scheme",
"font_size": 10,
"ignored_packages":
[
"Vintage"
],
// show unsaved tabs with a blue line instead of just the easy-to-miss circle close button
"highlight_modified_tabs": true,
@multiplemonomials
multiplemonomials / RandomAccessBuffer.java
Last active March 7, 2018 10:45
Java collection that implements a fixed-length buffer where adding a new element deletes the oldest element. Uses a fixed array internally, so insertion and access are O(1), and do not cause any memory allocations.
package frctest.gui;
/*
*
* Circular queue with a fixed size.
* Supports random access.
* The first element enqueued has index zero, and enqueueing another element will increment existing elements' indexes by 1.
* Enqueue()ing more than maxSize elements will overwrite the highest-index element.
*
* This class copyright (c) Jamie Smith
@multiplemonomials
multiplemonomials / LibraryUtils.cmake
Created January 25, 2018 09:23
CMake script that can determine various bits of information about library files, including whether or not they are shared libraries.
# Script containing several advanced functions for handling libraries in CMake.
# linker flag prefix -- if a link library starts with this character, it will be ignored by import_libraries()
# this is needed because FindMKL can return linker flags mixed with its libraries (which is actually the official CMake way of doing things)
if(TARGET_WINDOWS AND NOT MINGW)
set(LINKER_FLAG_PREFIX "/") # stupid illogical MSVC command-line format...
else()
set(LINKER_FLAG_PREFIX "-")
endif()
@multiplemonomials
multiplemonomials / SociLazyStatement.h
Last active October 26, 2017 23:44
Wrapper around a Soci (SQL library for C++) statement that allows you to bind variables at execution time, and not before then. Helps you improve performance by making statements class variables.
//
// Created by Jamie on 5/12/2017.
//
#ifndef SOCI_LAZYSTATEMENT_H
#define SOCI_LAZYSTATEMENT_H
#include <soci/core/soci.h>
#include <soci/core/session.h>
@multiplemonomials
multiplemonomials / CheckLinkerFlag.cmake
Last active May 5, 2017 06:11
CMake script to check if a linker flag is supported. Based on a certain StackOverflow answer, and modified from the standard library CheckCompilerFlag.cmake. Required for FindMKL.cmake.
# CheckLinkerFlag
# ------------------
#
# Checks whether a compiler supports a given linker flag.
#
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
include(CheckFortranSourceCompiles)
@multiplemonomials
multiplemonomials / PullParserAsyncTask.java
Last active April 12, 2017 17:55
Android AsyncTask for parsing an XML file with a minimum of boilerplate and pain. Uses the XML pull parser reference implementation library (Android's library was crashing with my file), with the javax package renamed to javay: https://mvnrepository.com/artifact/com.bea.xml/jsr173-ri
package net.multiplemonomials.densetsu.xml;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.util.Log;
import com.bea.xml.stream.events.EntityReferenceEvent;
import java.io.InputStream;
@multiplemonomials
multiplemonomials / CheckLinkerFlag.cmake
Created February 16, 2017 08:05
CMake script to check if a linker flag is valid in a given language. Modified from the CMake standard library's CheckCompilerFlag.cmake
# CheckLinkerFlag
# ------------------
#
# Checks whether a compiler supports a given linker flag.
#
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
include(CheckFortranSourceCompiles)
@multiplemonomials
multiplemonomials / FindMKL.cmake
Last active May 6, 2021 23:03
CMake script to find MKL. A MKL Link Line Advisor in your pocket! (Does not work on Windows, yet) Heavily modified from the original (by hanjianwei), and battle tested across many different distros and computers, including the SDSC supercomputer Comet. Requires my other CMake gists, LibraryUtils.cmake and CheckLinkerFlag.cmake.
# - Find Intel MKL
# modified for AMBER
# Find the MKL libraries
#
# NOTE: MKL_MULTI_THREADED requires the patched FindOpenMPFixed module from the Amber-MD/cmake-buildscripts repository.
#
# Options:
#
# MKL_STATIC : use static linking. Requires linker support for the -Wl,--start-group flag.
# MKL_MULTI_THREADED: use multi-threading. Requires the FindOpenMP module