diff --git a/libavcodec/aacenc_is.c b/libavcodec/aacenc_is.c
index 405f1785561eed85db19b40ef2dab5f36ea33a8a..46a97739042317a25393f98ec5230473516c0abb 100644
--- a/libavcodec/aacenc_is.c
+++ b/libavcodec/aacenc_is.c
@@ -54,7 +54,7 @@ struct AACISError ff_aac_is_encoding_err(AACEncContext *s, ChannelElement *cpe,
         FFPsyBand *band0 = &s->psy.ch[s->cur_channel+0].psy_bands[(w+w2)*16+g];
         FFPsyBand *band1 = &s->psy.ch[s->cur_channel+1].psy_bands[(w+w2)*16+g];
         int is_band_type, is_sf_idx = FFMAX(1, sce0->sf_idx[w*16+g]-4);
-        float e01_34 = phase*pow(ener1/ener0, 3.0/4.0);
+        float e01_34 = phase*pos_pow34(ener1/ener0);
         float maxval, dist_spec_err = 0.0f;
         float minthr = FFMIN(band0->threshold, band1->threshold);
         for (i = 0; i < sce0->ics.swb_sizes[g]; i++)
diff --git a/libavcodec/aacenc_utils.h b/libavcodec/aacenc_utils.h
index 736e4a06dadea0732390aeec14a99043002e61ac..cb5bc8da12962cbd9206a2fac389a5ede81ab728 100644
--- a/libavcodec/aacenc_utils.h
+++ b/libavcodec/aacenc_utils.h
@@ -45,6 +45,11 @@ static inline void abs_pow34_v(float *out, const float *in, const int size)
     }
 }
 
+static inline float pos_pow34(float a)
+{
+    return sqrtf(a * sqrtf(a));
+}
+
 /**
  * Quantize one coefficient.
  * @return absolute value of the quantized coefficient