user48409: I was creating a scoring formula for a game. 
The formula in question is 
millis() * 1.1 ^ (millis()/10000);

However, I'm having trouble understanding the different error messages that the Arduino IDE is projecting to me

invalid operands of type to binary operator

I have declared the score as an unsigned long. 

user7508: I would avoid calling millis() twice within the same expression. Not
really a big deal in your case, but the two calls can very well return
different values, which would make your formula slightly inconsistent.
Then, using the proper syntax for the power function, as explained by
Kwasmich:
uint32_t t = millis();
float score = t * pow(1.1, t/1e4);

Note that 1e4 is the scientific notation for 10000.0. I personally
find the former more readable, as you don't have to count the zeros.
Now, it is worth noting that the pow() function is very expensive to
compute on this kind of 8-bit FPU-less processor. It involves both a
logarithm and an exponential. The second line is essentially equivalent
to
float score = t * exp(t/1e4 * log(1.1));

The floating point division is also quite expensive. You could save
something like half the processing cycles by pre-computing
log(1.1)/1e4 and using the result in your expression:
float score = t * exp(t * 9.53e-6);


48409: <p>I was creating a scoring formula for a game. </p>

<p>The formula in question is </p>

<pre><code>millis() * 1.1 ^ (millis()/10000);
</code></pre>

<p>However, I'm having trouble understanding the different error messages that the Arduino IDE is projecting to me</p>

<blockquote>
  <p>invalid operands of type to binary operator</p>
</blockquote>

<p>I have declared the score as an <code>unsigned long</code>. </p>
 7508: <p>I would avoid calling <code>millis()</code> twice within the same expression. Not
really a big deal in your case, but the two calls can very well return
different values, which would make your formula slightly inconsistent.
Then, using the proper syntax for the power function, as explained by
Kwasmich:</p>



<pre class="lang-c++ prettyprint-override"><code>uint32_t t = millis();
float score = t * pow(1.1, t/1e4);
</code></pre>

<p>Note that <code>1e4</code> is the scientific notation for <code>10000.0</code>. I personally
find the former more readable, as you don't have to count the zeros.</p>

<p>Now, it is worth noting that the <code>pow()</code> function is very expensive to
compute on this kind of 8-bit FPU-less processor. It involves both a
logarithm and an exponential. The second line is essentially equivalent
to</p>

<pre class="lang-c++ prettyprint-override"><code>float score = t * exp(t/1e4 * log(1.1));
</code></pre>

<p>The floating point division is also quite expensive. You could save
something like half the processing cycles by pre-computing
<code>log(1.1)/1e4</code> and using the result in your expression:</p>

<pre class="lang-c++ prettyprint-override"><code>float score = t * exp(t * 9.53e-6);
</code></pre>
