Aggregation analysis:
...

imagine we have the code below:

def increment_number(number):
    # Convert the number to a list of bits
    bits = list(number)

    # Start from the rightmost bit
    index = len(bits) - 1

    # Iterate through the bits and perform the increment
    while index >= 0:
        if bits[index] == '0':
            # Change 0 to 1 and stop
            bits[index] = '1'
            break
        else:
            # Change 1 to 0 and move one position to the left
            bits[index] = '0'
            index -= 1

    # Convert the list of bits back to a string
    result = ''.join(bits)
    return result

# Example usage
number = '101'
result = increment_number(number)
print(result)

this is a program that increments a number with k bits in base 2 by one.
if we try to calculate its execution time we find out that it is dependent on the value of input number.

so we use a method named accounting; we do this task n time then calculate the average of those n time and that's our execution time:

j=0
n=10
while j<n :
	increment_basecar_number(number)
	j+=1

so now we aggregate the terms by counting each bit, first bit gets changed time, second bit gets changed of the times and...

Accounting method:
...

Each aggregate operation is assigned a "payment". The payment is intended to cover the cost of elementary operations needed to complete this particular operation, with some of the payment left over, placed in a pool to be used later. it's basically saving money for each tasks so it can use them later on the more heavier tasks.

now if look at the increment_number(number) example we can spend 1$ for every 0 to 1 and save 1$ for it. now if we have 1 to 0 change in bits we can do it because we have saved 1$ before hand.
note that this is for when we are counting from 00..0 if for example we start from a number 011..01 which has k ones in it then we add k$ for those ones and calculate the rest of them like before, .

Potential method:
...

we have a data structure called and a operation which is called which and for not defining to many variables its execution time is also
we define the function and we define a fake payment like the formula below:

so all is left to do is to define in a way that helps us calculate the execution time.
for example increment_number(number) we define to be the number of 1's in the number.
for example if the number has a ones in it and t adjacent ones from right side we calculate them like this:
which add up to for which is the execution time.