stdlib-js / google-summer-of-code

Google Summer of Code resources.
https://github.com/stdlib-js/stdlib
26 stars 7 forks source link

[RFC]: add C implementations for base special mathematical functions #42

Closed Rejoan-Sardar closed 8 months ago

Rejoan-Sardar commented 8 months ago

Full name

Rejoan Sardar

University status

Yes

University name

Lovely Professional University, Punjab

University program

BTech. Computer Science and Engineering

Expected graduation

2026

Short biography

I am a 2nd year B.Tech. Student in the department of Computer Science and Engineering at Lovely Professional University, Punjab. In College I have completed many courses like Problem Solving with Programming in C and C++, Object Oriented Programming, Data Structure and Algorithms and many more. Currently attending courses of Database Management Systems, Computer Network, Design Analysis of Algorithms, Operating System. My Interests lies in Web Development.

Timezone

IST (UTC + 5:30)

Contact details

email:rejoansardar4@gmail.com github:Rejoan-Sardar

Platform

Windows

Editor

Visual Studio Code stands as my preferred code editor due to its seamless functionality and user-friendly interface, making it the ideal choice from my extensive experience.

Programming experience

JavaScript experience

While contributing to stdlib-js development, I integrated JavaScript and C implementations for essential mathematical functions like boxcox1p, xlog1py, asinh, atanh, odd and even. This involved enhancing the standard library for both JavaScript and Node.js environments. My contributions aimed to improve the efficiency and functionality of these mathematical operations within the library, benefiting users across different platforms. Despite its flexibility, JavaScript's dynamic typing can pose challenges without tools such as TypeScript to enforce type safety. While JSDoc aids in documentation, it lacks the capability to enforce strict typing. With my proficient skills, I ensure robust code quality by utilizing TypeScript to maintain type safety and enhance overall code reliability.

Node.js experience

My proficiency in Node.js is evident from my experience working on substantial projects, where I've utilized JavaScript and Node.js extensively. I've contributed to the development of complex systems, demonstrating my ability to handle large-scale applications effectively. Through my work, I've honed my skills in designing scalable architectures and optimizing performance in Node.js environments. Whether it's implementing RESTful APIs, handling asynchronous operations, or integrating with databases, I've tackled diverse challenges with confidence. My deep understanding of Node.js ecosystems, coupled with strong problem-solving abilities, enables me to deliver high-quality solutions that meet both functional and performance requirements. Moreover, I continuously stay updated with the latest trends and best practices in Node.js development to ensure the success of my projects. Throughout my experience with Node.js, I've leveraged stdlib, ensuring consistent and reliable functionality across projects. By utilizing stdlib's extensive modules and functions, I've streamlined development processes and enhanced the scalability of Node.js applications.

C/Fortran experience

My proficiency in C programming and problem-solving skills have been refined through my extensive engagement in competitive programming. I excel in crafting efficient algorithms and implementing them effectively in C to solve a variety of challenges. With a solid foundation in data structures and algorithms, coupled with my ability to optimize code for performance, I consistently deliver robust solutions in competitive programming contests. My track record showcases my capability to tackle complex problems, demonstrating my dedication to mastering C programming and problem-solving at a competitive level.

Interest in stdlib

While I continue to refine my problem-solving skills in C/C++, I've been intrigued by the capabilities of the stdlib-js/stdlib library. Its modular structure, comprising smaller, focused packages, aligns with my preference for efficient solutions. I'm particularly fascinated by its potential for executing complex algorithms directly in the browser, with the plotting API serving as a prime example. Moreover, I've found the stdlib community to be incredibly welcoming and supportive.

Version control

Yes

Contributions to stdlib

Here, are the statuses of some PR's which I have authored.At present I have 20 PRs merged and 4 issues closed.

All PRs which are merged

Status Opened

All Prs which are opened

Issues Opened All issues which are currently opened

Resolved Issue

Goals

Why this project?

This project is crucial because it aims to enhance the stdlib-js/stdlib library, ensuring it remains a comprehensive resource for mathematical computation in the JavaScript ecosystem. By incorporating all necessary functions, we empower developers with a versatile toolkit, enabling them to tackle complex tasks efficiently. This endeavor is driven by a commitment to fostering innovation and supporting the diverse needs of users across various projects. With over 20 functions already implemented, our dedication to completeness ensures the library's relevance and utility in real-world applications. Our goal is to uphold stdlib's reputation as a trusted and indispensable tool for mathematical computation in JavaScript.

Qualifications

Prior art

For this project, we're building upon an already-established groundwork, as evidenced by the successful implementation of 20 functions. This achievement signifies a significant milestone, showcasing our ability to tackle complex tasks and deliver tangible results. Each implemented function represents a step forward in enhancing the project's capabilities, demonstrating our commitment to excellence and innovation. With this solid foundation in place, we are well-positioned to expand upon our achievements, driving the project towards even greater success.

Commitment

In the upcoming summer, I intend to focus solely on this project, with no other professional obligations. This allows me to commit to a standard 40-hour workweek throughout the coding period. Additionally, my academic commitments will wrap up prior to the coding period and won't resume until after the project deadline, guaranteeing my full availability for the entirety of the project.

Schedule

Assuming a 12 week schedule,

Notes:

Checklist

Pranavchiku commented 8 months ago

Hello @Rejoan-Sardar , a few changes that I think will make your proposal sound better:

NOTE:

The following lines in commitment section is copied over from https://github.com/stdlib-js/google-summer-of-code/issues/40, please refer https://github.com/stdlib-js/google-summer-of-code?tab=readme-ov-file#plagiarism to know consequences of plagiarism.

my classes will conclude well before the coding period starts and won't resume until after the pencils down date, ensuring I'm fully available for the entire duration of the project.

Rejoan-Sardar commented 8 months ago

@Pranavchiku Sure, I'll do that.

kgryte commented 8 months ago

@Rejoan-Sardar One comment. You identify various APIs for extension in weeks 8-12. A principle difficulty with implementing these is that they will likely rely on various BLAS and LAPACK functionality, which is beyond the scope of the associated project idea for this proposal.

A couple of other possibilities:

  1. We base our implementations on upstream reference implementations (e.g., Cephes, Golang, flibm, Boost, etc). Some of our implementations are outdated relative to their upstream reference implementations. It would be nice to go back through and audit our existing implementations and ensure that they are up-to-date (e.g., with any perf/accuracy improvements).
  2. Another stretch goal for this project could be creating higher level wrappers for the base functionality (e.g., strided, ndarray, iterator, array).
Rejoan-Sardar commented 8 months ago

@kgryte Thank you for taking the time to review my project proposal and for your insightful comments.

Regarding your comment about the potential difficulties with implementing various APIs in weeks 8-12 due to reliance on BLAS and LAPACK functionality, I agree that it's crucial to carefully consider the scope and feasibility of the project. Your input has prompted me to reassess those aspects and make necessary adjustments to ensure a more focused approach.

I appreciate your alternative suggestions for enhancing the project:

Auditing existing implementations against upstream reference implementations is a valuable step to ensure our work remains current and aligned with industry standards. I will prioritize this as part of the project plan.

Creating higher-level wrappers for the base functionality is an excellent idea that aligns well with our goal of improving usability. I will explore incorporating this as a stretch goal to enhance the project's overall value.