Git Product home page Git Product logo

ccmath's Introduction

I take breaks from contributing from time to time to learn new topics on my own. So if you see a gap in my contribution timeline thats probably why. ^^

Repositories

  • ccmath 2024+
    A C++17 constexpr-Compatible cmath Library.
  • Mim 2023+
    A linear algebra math framework optimized for real time graphics programmed in modern C++.
  • Genesis Engine 2023+
    A vulkan game engine made with modern C++. Worked on in my spare time.
  • Dragon Archiver 2022+
    A virtual world creation, management, and note taking tool for tabletop role playing games made in .Net.

You can check out more of my gists here.

Game Jam Projects

  • GMTK Game Jam 2022 - Casino 2022
    Casino is a game about addiction and the strangle hold it can have on your life. This game was made in 48 hours for the GMTK Game Jam with a team of 6 people using Unreal Engine 4. I was one of two programmers on the team.

My history on Github

ccmath's People

Contributors

rinzii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ccmath's Issues

Add first class support for Intel DPC++

I'd like to bring in first class support for Intel DPC++. To achieve this the following items need to be addressed:

  • Add Intel DPC++ to the CI.
  • Validate all current implementations have zero conflicts.
  • Validate there is not a significant decrease in performance across the entire library.

I've already done some of the ground work required for this inside of our compiler detection header and the cmakelist. Overall, this should be pretty straightforward to implement, but I've not had time to handle the issue myself.

Implement Hyperbolic Module

The hyperbolic module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • acosh
  • asinh
  • atanh
  • cosh
  • sinh
  • tanh

Document:

  • acosh
  • asinh
  • atanh
  • cosh
  • sinh
  • tanh

NOTES:

None currently.

Implement Special Module

The special module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • assoc_laguerre
  • assoc_legendre
  • beta
  • comp_ellint_1
  • comp_ellint_2
  • comp_ellint_3
  • cyl_bessel_i
  • cyl_bessel_j
  • cyl_bessel_ik
  • cyl_neumann
  • ellint_1
  • ellint_2
  • ellint_3
  • expint
  • hermite
  • laguerre
  • legendre
  • riemann_zeta
  • sph_bessel
  • sph_legendre
  • sph_neumann

Document:

  • assoc_laguerre
  • assoc_legendre
  • beta
  • comp_ellint_1
  • comp_ellint_2
  • comp_ellint_3
  • cyl_bessel_i
  • cyl_bessel_j
  • cyl_bessel_ik
  • cyl_neumann
  • ellint_1
  • ellint_2
  • ellint_3
  • expint
  • hermite
  • laguerre
  • legendre
  • riemann_zeta
  • sph_bessel
  • sph_legendre
  • sph_neumann

NOTES:

Currently these functions are low on the priority list.

Break up test suite to not be singular tests

Currently we perform all of our tests on a single test case and do not break up the tests into more precise test cases. Currently, all of the tests that have been implemented should be improved to have more explicit coverage of all of the test cases.

Benefits this change would provide are that the test cases would be more explicit and explain what the tests are testing for exactly.

Add first class support for Nvidia HPC C++

I'd like to bring in first class support for Nvidia HPC C++. To achieve this the following items need to be addressed:

  • Add Nvidia HPC C++ to the CI.
  • Validate all current implementations have zero conflicts.
  • Validate there is not a significant decrease in performance across the entire library.

I've already done some of the ground work required for this inside of our compiler detection header and the cmakelist. Overall, this should be pretty straightforward to implement, but I've not had time to handle the issue myself.

Implement Power Module

The power module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • cbrt
  • hypot
  • pow
  • sqrt

Document:

  • cbrt
  • hypot
  • pow
  • sqrt

NOTES:

None currently.

Build out comprehensive benchmark suite

Currently our bench marking setup with google benchmark is pretty basic and only does the bare minimum. This has been fine for a while, but implementing a hardened and robust testing suite would be best for long term work. I personally lack the knowledge at the moment with google benchmark to do this myself without much more time to learn how the library works.

Add first class support for Nvidia CUDA

I'd like to bring in first class support for Nvidia CUDA. To achieve this the following items need to be addressed:

  • Add Nvidia CUDA (NVCC) to the CI.
  • Validate all current implementations have zero conflicts.
  • Validate there is not a significant decrease in performance across the entire library.

Even though some of the ground work has been done in detection I'm not sure it will be super simple as I'd like. There is likely a lot of cleanup work across the code base before NVCC will compile the library.

Implement Float Manipulation Module

The float manipulation module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • copysign
  • frexp
  • ilogb
  • ldexp
  • logb
  • modf
  • nextafter
  • scalbn

Document:

  • copysign
  • frexp
  • ilogb
  • ldexp
  • logb
  • modf
  • nextafter
  • scalbn

NOTES:

None currently.

Implement int128 intrinsic

Having access to int128 intrinsic such as int128_t and uint128_t would be extremely helpful in much of the core implementation process for most functions that implement long double. The core benefit of this would be it would allow us a generic manner to handle long double without having to worry about if we've been given 80 bits or 128 bits.

The requirements would be quite stringent and it would have to be very efficient if possible. Ideally the implementation of this type would be identical in use to something like std::uint64_t.

Implement Nearest Module

The nearest module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • ceil
  • floor
  • nearbyint
  • rint
  • round
  • trunc

Document:

  • ceil
  • floor
  • nearbyint
  • rint
  • round
  • trunc

NOTES:

None currently.

Implement Exponential Module

The exponential module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • exp
  • exp2
  • expm1
  • log
  • log1p
  • log2
  • log10

Document:

  • exp
  • exp2
  • expm1
  • log
  • log1p
  • log2
  • log10

NOTES:

None currently.

Implement Trigonometric Module

The trigonometric module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • acos
  • asin
  • atan
  • atan2
  • cos
  • sin
  • tan

Document:

  • acos
  • asin
  • atan
  • atan2
  • cos
  • sin
  • tan

NOTES:

None currently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.