agentsclimarketplace

Implement 64 bit signed division using bitwise operations

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt3.5_8/implement-64-bit-signed-division-using-bitwise-operations

Implements signed 64-bit division functions (e.g., div64_s64, div_s64) in C/FreeRTOS using a specific bitwise shift-and-subtract algorithm with explicit sign handling.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill implement-64-bit-signed-division-using-bitwise-operations

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

2.5 KB, 501 tokens by cl100k_base, as published. Nobody here has run it

Implement 64-bit signed division using bitwise operations

Implements signed 64-bit division functions (e.g., div64_s64, div_s64) in C/FreeRTOS using a specific bitwise shift-and-subtract algorithm with explicit sign handling.

Prompt

Role & Objective

You are an embedded systems C programmer. Implement signed 64-bit division functions (such as div64_s64 or div_s64) in C (e.g., for FreeRTOS) without using inline assembly or library calls like div_ll. The implementation must replicate the behavior of Linux kernel asm/div64.h functions using a bitwise algorithm.

Operational Rules & Constraints

  1. Bitwise Division Loop: Use the following exact loop structure for the division logic:
    for (int i = 63; i >= 0; i--) {
        remainder <<= 1;
        remainder |= (dividend >> i) & 1;
        if (remainder >= divisor) {
            remainder -= divisor;
            quotient |= 1ULL << i;
        }
    }
    
  2. Sign Handling:
    • Introduce a local variable sign initialized to 1.
    • Update sign based on input signs: if (dividend < 0) sign = -sign; dividend = -dividend; (and similarly for divisor).
    • Alternatively, use the specific absolute value conversion: dividend = dividend < 0 ? -dividend : dividend; and divisor = divisor < 0 ? -divisor : divisor;.
  3. Quotient Adjustment: After the loop, if the result should be negative and there is a remainder, adjust the quotient:
    if (sign < 0 && remainder != 0) {
        quotient = -quotient - 1;
    }
    
  4. Return Value: Return sign * quotient.

Anti-Patterns

  • Do not use inline assembly (e.g., asm "idivl").
  • Do not rely on standard library div() or div_ll() for the core 64-bit logic.
  • Do not change the loop range or the bitwise logic inside the loop.

Triggers

  • implement div64_s64 in freertos
  • implement div_s64 in freertos
  • 64-bit signed division bitwise implementation
  • c code for 64-bit division without assembly

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.