Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - ruler501

Pages: [1] 2 3 ... 184
Other / Re: Need a new motherboard
« on: July 02, 2014, 05:06:57 pm »
What I really need is to invest in water cooling my graphics cards since that is where most of the heat in my system comes from. It just doesn't seem to be possible to get enough airflow across them. I also like the idea of having a super hardened board. I'll probably go with the M7Hero though

Other / Re: Need a new motherboard
« on: July 02, 2014, 04:54:14 pm »
They put special "Thermal Armour" on it that is supposed to help with heat dissipation for all parts including processor. THey also toss in a couple extra fans and mounts to go with it. Was wondering if those really did anything.

More than just a cool military-styled cover, TUF Thermal Armor employs dual fans to provide boosted airflow for rapid cooling. Reversible-airflow technology blows dust up and away from the heatsink VRM, while the exclusive flow-valve design controls the heat-pipe's air contact — great for liquid-cooling setups!

Other / Re: Need a new motherboard
« on: July 02, 2014, 04:51:41 pm »
With this computer I'm always worried about cooling so I was wondering if anyone knew if the Sabertooth Mark 1 actually helps much with that as Asus seems to claim?

Other / Need a new motherboard
« on: July 01, 2014, 08:24:35 pm »
My motherboard and processor both decided to die on me at pretty much the same time so I've had the replace both of them. Thankfully I had a full warranty on both of them. For the processor the store just swapped it for a 4790k which was great. For the motherboard I get to decide what I want since they'll just be giving me in store credit. Currently I'm trying to decide between the Asus z98  Sabertooth Mark 1, ROG Maximus VII Hero, and the  Gigabyte GA-Z97X-UD5H. My priorities are cooling and storage though I like the Dual Ethernet ports on the Asus and Gigabyte ones. I would like to keep it under $220, but can spend more if it's worth it. Any thoughts on motherboard choice, I need it to be z97 or at least Devils Canyon compatible which most of the z87 ones aren't out of the box.

The specs on the rest of the build is:
PCPartPicker part list

CPU: Intel Core i7-4790K 4.0GHz Quad-Core Processor
CPU Cooler: NZXT Kraken X60 98.3 CFM Liquid CPU Cooler
Thermal Compound: Arctic Silver 5 High-Density Polysynthetic Silver 3.5g Thermal Paste
Memory: G.Skill Ares Series 16GB (2 x 8GB) DDR3-1866 Memory 
Storage: Samsung 840 EVO 1TB 2.5" Solid State Drive   
Storage: Seagate Barracuda 1TB 3.5" 7200RPM Internal Hard Drive 
Video Card: Sapphire Radeon HD 7970 3GB Video Card
Video Card: XFX 280x Black Edition Double Dissipation
Case: Fractal Design Arc Midi R2 (Black) ATX Mid Tower Case
Power Supply: Silverstone Strider Plus 1000W 80+ Silver Certified Fully-Modular ATX Power Supply
Optical Drive: LG GH24NS95 DVD/CD Writer
Operating System: Microsoft Windows 8.1 (OEM) (64-bit)
Monitor: Hannspree HE245DPB 60Hz 23.6" Monitor 
Monitor: Hannspree HE245DPB 60Hz 23.6" Monitor
Monitor: Hannspree HE245DPB 60Hz 23.6" Monitor
Case Fan: Noctua NF-P14 FLX 65.0 CFM 140mm  Fan
Case Fan: Noctua NF-P14 FLX 65.0 CFM 140mm  Fan
Case Fan: Prolimatech PRO-USV14 98.0 CFM 140mm  Fan
Keyboard: Rosewill RK-9000BR Wired Standard Keyboard
Mouse: Logitech M325 Wireless Optical Mouse
Other: 320gb 5400RPM laptop harddrive
Other: Microsoft Windows 7 Home Premium SP1 (OEM) (64-bit)
Other: Aperture M 5.25" Card Reader

There's a Github GUI for Windows and OSX.
There is also a nice git GUI. That's what I would start with. That focuses more on code though and I'm not sure how well it would do with writing. Honestly I think we'd need someone who has done a good amount of collaborative writing to come tell us what would be wanted from a program like that.

I'd say you should still use git as the backend and just write some nice front end interfaces for it.

Math and Science / Re: Great program for calculus
« on: March 25, 2014, 03:35:02 pm »
He wants an example is my guess. An easy example would be limits of integrals that aren't expressible in elementary functions(\lim_{x \to 1} \int_x^10 \frac{dx}{\ln x} Note that I'm not sure if this limit actually exists) Some 2+ dimensional limits are also hard to do.

Math and Science / Re: Great program for calculus
« on: March 24, 2014, 02:56:24 am »
Some limits can be rather difficult, though most of those aren't things I'd expect a calculator program to do better(and usually what makes them hard is writing out the proof anyways).

Math and Science / Re: Interesting math questions
« on: March 23, 2014, 12:14:16 am »
willrandship I've looked at those but they are mostly number theory or discrete math problems and I'm more interested in topology and analysis.

Math and Science / Interesting Theoretical Math Problems
« on: March 22, 2014, 11:54:33 pm »
What are some really interesting math problems you know of?

One I worked on the other day and neither of my math professors had a quick answer to was: Construct 3 disjoint open sets in R with the same boundary, if it is not possible prove why.
Spoiler For answer:
The intuitive answer that it is not possible because you can't have three disjoint open sets that share a boundary point(this is false at least in R).

The correct proof from this is a proof that in R if a set A is a subset of another closed set B and they share a boundary then the closure of A equals B. With this you can prove that the closure of the first set is equal to both of the other sets. Therefore the other two sets are equal. Two disjoint sets cannot be equal so they cannot exist.
I know this isn't formal, I do have a formal proof, but formatting really doesn't go well on the forums here.

Anyone else have interesting theoretical problems like this?

EDIT: I'm more interested in topics in topology and analysis(recently I've been looking at the cantor like middle-m sets).

Miscellaneous / Re: Bitcoin - the currency of the internet.
« on: March 03, 2014, 01:28:05 am »
Mt Gox messed up a lot and is pretty much gone now.

Humour and Jokes / Re: Omnimaga in 2015
« on: February 28, 2014, 12:21:08 am »
Quadratic solver and flappy bird clone combined? Sounds like a great, evil idea  :evillaugh:
This exists now...
much prediction DJ

I took it as a challenge, so I wrote a quick and dirty clone to implement it :P
No I want to believe he was just psychic :P

Humour and Jokes / Re: Omnimaga in 2015
« on: February 27, 2014, 11:09:58 pm »
Quadratic solver and flappy bird clone combined? Sounds like a great, evil idea  :evillaugh:
This exists now...
much prediction DJ

Humour and Jokes / Re: Why I'm leaving Omnimaga for Cemetech
« on: February 16, 2014, 10:25:32 pm »
Wait are we allowed to eat the lobsters now?
* ruler501  takes out a fork

Computer Programming / Re: Testing if a rational is in the cantor set
« on: February 12, 2014, 12:28:15 am »
I've now managed to get an OpenCL version of it running, but it seems to run a lot slower than it does on the processor. Is this just not a good problem for GPU's or is there a bigger problem.

Code: [Select]
#include <CL/cl.hpp>
#include <functional>
#include <ctime>
#include <iostream>
#include <fstream>
#include <exception>
#include <cstdlib>
#include <vector>
#include <thread>
#include <cmath>
#include <string>
#include <algorithm>
#include <thread>
#include <cmath>
#include <sstream>

#define SUCCESS 0
#define FAILURE 1

const int NUM_ELEMENTS = 512;

int convertToString(const char *filename, std::string& s)
    size_t size;
    char*  str;

    // create a file stream object by filename
    std::fstream f(filename, (std::fstream::in | std::fstream::binary));

      return FAILURE;
        size_t fileSize;
        f.seekg(0, std::fstream::end);
        size = fileSize = (size_t)f.tellg();
        f.seekg(0, std::fstream::beg);

        str = new char[size+1];
            return FAILURE;
        }, fileSize);
        str[size] = '\0';

        s = str;
        delete[] str;
        return SUCCESS;

void printOutput(unsigned long long start, unsigned long long *values){
    for(unsigned int i = 0; i < NUM_ELEMENTS; i++)
       if (values[i] != 0)
            std::cout << start+i << ',' << values[i] << std::endl;

void newList(unsigned long long start, unsigned long long *dataList){
    for(int i=0; i < NUM_ELEMENTS; ++i)
        dataList[i] = start + i;

using namespace cl;

Kernel kernelA;
Context context;
CommandQueue queue;

int init() {
    cl_int status = 0;
const char* buildOption ="-x clc++ ";
std::vector<Platform> platforms;
status = Platform::get(&platforms);
if (status != CL_SUCCESS){
std::cout<<"Error: Getting platforms!"<<std::endl;
return FAILURE;
std::vector<cl::Platform>::iterator iter;
for(iter = platforms.begin(); iter != platforms.end(); ++iter)
if(!strcmp((*iter).getInfo<CL_PLATFORM_VENDOR>().c_str(), "Advanced Micro Devices, Inc."))
cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(*iter) (), 0};
bool gpuNotFound = false;
context = cl::Context(CL_DEVICE_TYPE_GPU, cps, NULL, NULL, &status);
catch(std::exception e){
gpuNotFound = true;
std::cout<<"GPU not found, falling back to CPU!"<<std::endl;
context = cl::Context(CL_DEVICE_TYPE_CPU, cps, NULL, NULL, &status);
if (status != CL_SUCCESS){
std::cout<<"Error: Creating context!"<<std::endl;
return FAILURE;
std::vector<Device> devices = context.getInfo<CL_CONTEXT_DEVICES>();
queue = CommandQueue(context, devices[0]);
std::ifstream sourceFile("");
std::string sourceCode(
Program::Sources source(1, std::make_pair(sourceCode.c_str(), sourceCode.length()+1));
Program program = Program(context, source);, buildOption);
kernelA = Kernel(program, "countRationals");
}catch(cl::Error e){
std::cout << "Line "<< __LINE__<<": Error in "<<e.what() <<std::endl;
return FAILURE;
return SUCCESS;

int execute(unsigned long long* inputList, unsigned long long* outputList) {
Buffer inputBuffer = Buffer(context, CL_MEM_READ_WRITE, NUM_ELEMENTS * sizeof(unsigned long long));
Buffer outputBuffer = Buffer(context, CL_MEM_READ_WRITE, NUM_ELEMENTS * sizeof(unsigned long long));
queue.enqueueWriteBuffer(inputBuffer, CL_TRUE, 0, NUM_ELEMENTS * sizeof(unsigned long long), inputList);
kernelA.setArg(0, inputBuffer);
kernelA.setArg(1, outputBuffer);
NDRange global(NUM_ELEMENTS);
NDRange local(NUM_ELEMENTS/2);
queue.enqueueNDRangeKernel(kernelA, NullRange, global, local);
queue.enqueueReadBuffer(outputBuffer, CL_TRUE, 0, NUM_ELEMENTS * sizeof(unsigned long long), outputList);
}catch(cl::Error e){
std::cout << "Line "<< __LINE__<<": Error in "<<e.what() <<std::endl;
return FAILURE;
    return SUCCESS;

using namespace std;

int main(int argc, char* argv[]){
    unsigned long long minNum, maxNum;
    if (argc == 2){
        minNum = pow(3, atoi(argv[1]));
        maxNum = pow(3, atoi(argv[1]) + 1);
    else if (argc == 3){
        minNum = pow(3, atoi(argv[1]));
        maxNum = pow(3, atoi(argv[2]));
    else if (argc == 4){
        minNum = pow(3, atoi(argv[1]));
        maxNum = pow(3, atoi(argv[2]));
    else return -1;
    unsigned long long *q = nullptr, *result = nullptr, *old = nullptr;
    thread workThread, outThread;
    q = new unsigned long long[NUM_ELEMENTS];
    newList(minNum, q);
    result = new unsigned long long[NUM_ELEMENTS];
    workThread = thread(execute, q, result);
    for(unsigned long long i = minNum + NUM_ELEMENTS; i < maxNum; i += NUM_ELEMENTS){
        old = result;
        result = new unsigned long long[NUM_ELEMENTS];
        newList(i, q);
        workThread = thread(execute, q, result);
        outThread = thread(printOutput, i, old);
        delete[] old;
        old = nullptr;
    delete[] q;
    delete[] result;
    return 0;

With this kernel code
Code: [Select]
bool testCantor(unsigned long p, unsigned long q){
while(q % 3 == 0){
q /= 3;
if (p/q == 1) return p==q;
p %= q;
unsigned long p_start = p;
unsigned long p3 = p * 3;
if(p3/q == 1) return false;
p = p3 % q;
} while(p != p_start);
return true;

bool coprime(unsigned long a, unsigned long b){
    while (a != b){
        if (a > b) a = a - b;
        else b = b - a;
    return a == 1;

void countRationals(__global unsigned long *input, __global unsigned long *output){
    int gid = get_global_id(0);
    unsigned long q = input[gid], p = 1;
    output[gid] = 0;
    for(p = 1; p <= q/3; p++){
        if(p % 3 != 0 && testCantor(p, q))
            for(unsigned long i = p; i <= q/3; i *= 3)
                    output[gid] += 2;

Pages: [1] 2 3 ... 184