Skip to content

Instantly share code, notes, and snippets.

View MihailJP's full-sized avatar

MihailJP MihailJP

View GitHub Profile
@MihailJP
MihailJP / gcd.fth
Created May 17, 2014 11:25
GCD and LCM of two numbers, implemented with Forth
\ This implements Euclidean algorithm in Forth
: gcd ( X Y )
2dup <= if swap ( Y X ) then
( X Y )
begin
tuck ( Y X Y )
mod ( Y Z )
dup ( Y Z Z )
0= until ( Y Z )
( Y 0 )
@MihailJP
MihailJP / modulo.hpp
Created May 17, 2014 10:31
C++ modulo whose resulting sign is same as DIVISOR, not dividend
#include <stdexcept>
template<typename T> T modulo(T dividend, T divisor) {
if (divisor == static_cast<T>(0)) // division by zero is not allowed
throw std::domain_error("division by zero");
if (dividend < static_cast<T>(0)) // dividend is negative
return -((-dividend) % (-divisor));
else // dividend is non-negative
return dividend % divisor;
}
@MihailJP
MihailJP / groovy.spec
Last active August 29, 2015 14:00 — forked from kazuhisya/Makefile
%define groovy_root_dir /usr/share
Name: groovy
Version: 2.2.2
Release: 1%{?dist}
License: See: http://groovy.codehaus.org/license.html
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: Development/Languages/Groovy
Summary: Contains the base system for executing groovy scripts.
Source: http://dist.codehaus.org/groovy/distributions/groovy-binary-%{version}.zip
@MihailJP
MihailJP / gcd.lua
Created January 26, 2014 11:25
Implementation of Euclidian algorithm
function gcd(a, b)
local x = a; local y = b
repeat
if x > y then
x = math.fmod(x, y)
else
y = math.fmod(y, x)
end
until x == 0 or y == 0
return x + y
@MihailJP
MihailJP / gpufan.bash
Created November 5, 2013 13:02
Script to control the fan speed automatically (works only for NVIDIA graphic cards)
#!/bin/bash
# Script to control the fan speed automatically
setFanSpeed() {
eval "nvidia-settings -a GPUFanControlState=1 -a [fan:0]/GPUCurrentFanSpeed=$1 > /dev/null"
}
cleanup() {
eval "nvidia-settings -a GPUFanControlState=0"
@MihailJP
MihailJP / stat.hs
Created July 15, 2013 06:55
Functions for statistics
-- Functions for statistics
import Data.List
-- Averages
average p = (sum p) / (fromIntegral $ length p) -- arithmetic mean
geomean p = (product p) ** (1.0 / (fromIntegral $ length p)) -- geometric mean
harmean p = (fromIntegral $ length p) / (sum $ map (\x -> 1.0 / x) p) -- harmonic mean
rms p = sqrt $ average $ map (\x -> x * x) p -- quadratic mean (RMS)
@MihailJP
MihailJP / timezone.c
Created April 20, 2013 16:55
Find the time zone
#include <time.h>
signed long getTZ ()
{
struct tm* timeStruct;
time_t timeValBase = 86400; /* I know an implementation in which time_t is unsigned */
time_t timeVal;
timeStruct = gmtime(&timeValBase); /* parse as the universal time */
timeVal = mktime(tp); /* intentionally treat as the local time in order to find the time zone */
@MihailJP
MihailJP / scala.xml
Last active April 19, 2024 01:14
Notepad++ syntax highlighting definition file for Scala
<NotepadPlus>
<UserLang name="Scala" ext="scala" udlVersion="2.0">
<Settings>
<Global caseIgnored="no" allowFoldOfComments="no" forceLineCommentsAtBOL="no" foldCompact="no" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="yes" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments" id="0">00// 01 02 03/* 04*/</Keywords>
<Keywords name="Numbers, additional" id="1"></Keywords>
<Keywords name="Numbers, prefixes" id="2">0x</Keywords>
@MihailJP
MihailJP / rational.hpp
Created January 17, 2013 16:40
Fraction class template
#pragma once
#include <stdexcept>
// Calculate GCD (for reduction)
template<typename T> T gcd(T x, T y) {
// Euclidean algorithm
T val1 = (x < y) ? y : x, val2 = (x < y) ? x : y;
T* m = &val1; T* n = &val2; T* tmpptr = nullptr;
while (true) {
@MihailJP
MihailJP / paco-glib-issue.patch
Created January 8, 2013 04:21
Patch to compile GPACO with newer GLIB/GTKMM
diff -ru paco-2.0.9/gpaco/gconfig.h paco-2.0.9-newglib/gpaco/gconfig.h
--- paco-2.0.9/gpaco/gconfig.h 2010-06-26 04:51:00.000000000 +0900
+++ paco-2.0.9-newglib/gpaco/gconfig.h 2013-01-08 13:03:12.497896388 +0900
@@ -11,7 +11,7 @@
#include "paco/baseconfig.h"
#include <glibmm/ustring.h>
-#include <glib/gkeyfile.h>
+#include <glib.h>
#include <vector>